Files
convx/to_float64.go
T

53 lines
945 B
Go
Raw Normal View History

2023-12-03 16:20:46 +08:00
package convx
import (
"strconv"
"errors"
)
// interface 转 float64
func ToFloat64(val interface{}) (f float64, err error) {
2024-10-28 20:02:37 +08:00
switch v := val.(type) {
case nil:
return 0, errors.New("val is nil")
case float32:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case float64:
return v, nil
case int:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case int8:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case int16:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case int32:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case int64:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case uint:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case uint8:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case uint16:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case uint32:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case uint64:
2023-12-03 16:20:46 +08:00
return float64(v), nil
2024-10-28 20:02:37 +08:00
case string:
return strconv.ParseFloat(v, 64)
case bool:
2023-12-03 16:20:46 +08:00
if v {
return 1, nil
} else {
return 0, nil
}
2024-10-28 20:02:37 +08:00
case []byte:
return strconv.ParseFloat(string(v), 64)
2023-12-03 16:20:46 +08:00
}
2024-10-28 20:02:37 +08:00
return 0, errors.New("convx.ToFloat64: unknown type")
2023-12-03 16:20:46 +08:00
}