diff --git a/cast_test.go b/cast_test.go index c9f642c..1015877 100644 --- a/cast_test.go +++ b/cast_test.go @@ -21,6 +21,14 @@ func TestToInt(t *testing.T) { assert.Equal(t, ToInt(eight), 8) } +func TestToFloat64(t *testing.T) { + var eight interface{} = 8 + assert.Equal(t, ToFloat64(8), 8.00) + assert.Equal(t, ToFloat64(8.31), 8.31) + assert.Equal(t, ToFloat64("8.31"), 8.31) + assert.Equal(t, ToFloat64(eight), 8.0) +} + func TestToString(t *testing.T) { var foo interface{} = "one more time" assert.Equal(t, ToString(8), "8") diff --git a/caste.go b/caste.go index e58d1ae..bcc4fd2 100644 --- a/caste.go +++ b/caste.go @@ -59,6 +59,16 @@ func ToFloat64E(i interface{}) (float64, bool) { return s, true case float32: return float64(s), true + case int64: + return float64(s), true + case int32: + return float64(s), true + case int16: + return float64(s), true + case int8: + return float64(s), true + case int: + return float64(s), true case string: v, err := strconv.ParseFloat(s, 64) if err == nil {