Golang中的math.Floor
返回一个float64。但我希望它返回一个整数。如何在执行floor
操作后获取整数值?我可以使用int(x)
或int32(x)
或int64(x)
吗?我担心整数范围可能与float64结果的范围不匹配,因此会给操作带来不准确。
答案 0 :(得分:6)
在进行转换之前,您可以将float64值与math.MaxInt64
或math.MinInt64
进行比较。
答案 1 :(得分:6)
您可能只想事先检查;如果转换将安全执行或发生溢出。
如/convert所示,
package main
import (
"fmt"
"math"
)
func main() {
var (
a int64
f64 float64
)
// This number doesn't exist in the float64 world,
// just a number to perform the test.
f64 = math.Floor(9223372036854775808.5)
if f64 >= math.MaxInt64 || f64 <= math.MinInt64 {
fmt.Println("f64 is out of int64 range.")
return
}
a = int64(f64)
fmt.Println(a)
}
我希望这能回答你的问题 此外,我真的想知道是否有更好的解决方案。 :)