fix wrong float and bool conversion

This commit is contained in:
Adrian Zuercher
2025-07-15 19:20:11 +02:00
parent 3b38be8de5
commit 274a80d605

View File

@@ -36,8 +36,8 @@ func Float32From(v any) float32 {
case uint64:
return float32(val)
case string:
if i, err := strconv.Atoi(val); err == nil {
return float32(i)
if f64, err := strconv.ParseFloat(val, 32); err == nil {
return float32(f64)
}
return 0
default:
@@ -76,8 +76,8 @@ func Float64From(v any) float64 {
case uint64:
return float64(val)
case string:
if i, err := strconv.Atoi(val); err == nil {
return float64(i)
if f64, err := strconv.ParseFloat(val, 32); err == nil {
return f64
}
return 0
default:
@@ -433,7 +433,14 @@ func BoolFrom(v any) bool {
case float64:
return val >= 1
case string:
return strings.ToLower(val) == "false" || v == "0"
if strings.ToLower(val) == "true" {
return true
} else if strings.ToLower(val) == "false" {
return false
} else if i, err := strconv.Atoi(val); err == nil {
return i > 0
}
return false
default:
return false
}