@ -465,7 +465,9 @@ func intCast(v *Value) (int64, error) {
case string :
case string :
// Parse as number, truncate floating point if
// Parse as number, truncate floating point if
// needed.
// needed.
res , ok := strToInt ( x )
// String might contain trimming spaces, which
// needs to be trimmed.
res , ok := strToInt ( strings . TrimSpace ( x ) )
if ! ok {
if ! ok {
return 0 , errCastFailure ( "could not parse as int" )
return 0 , errCastFailure ( "could not parse as int" )
}
}
@ -473,7 +475,9 @@ func intCast(v *Value) (int64, error) {
case [ ] byte :
case [ ] byte :
// Parse as number, truncate floating point if
// Parse as number, truncate floating point if
// needed.
// needed.
res , ok := strToInt ( string ( x ) )
// String might contain trimming spaces, which
// needs to be trimmed.
res , ok := strToInt ( strings . TrimSpace ( string ( x ) ) )
if ! ok {
if ! ok {
return 0 , errCastFailure ( "could not parse as int" )
return 0 , errCastFailure ( "could not parse as int" )
}
}
@ -491,13 +495,13 @@ func floatCast(v *Value) (float64, error) {
case int :
case int :
return float64 ( x ) , nil
return float64 ( x ) , nil
case string :
case string :
f , err := strconv . ParseFloat ( x , 64 )
f , err := strconv . ParseFloat ( strings . TrimSpace ( x ) , 64 )
if err != nil {
if err != nil {
return 0 , errCastFailure ( "could not parse as float" )
return 0 , errCastFailure ( "could not parse as float" )
}
}
return f , nil
return f , nil
case [ ] byte :
case [ ] byte :
f , err := strconv . ParseFloat ( string ( x ) , 64 )
f , err := strconv . ParseFloat ( strings . TrimSpace ( string ( x ) ) , 64 )
if err != nil {
if err != nil {
return 0 , errCastFailure ( "could not parse as float" )
return 0 , errCastFailure ( "could not parse as float" )
}
}