如何从golang的数学楼层函数中获取整数结果?

时间:2017-10-04 16:33:33

标签: go

Golang中的math.Floor返回一个float64。但我希望它返回一个整数。如何在执行floor操作后获取整数值?我可以使用int(x)int32(x)int64(x)吗?我担心整数范围可能与float64结果的范围不匹配,因此会给操作带来不准确。

2 个答案:

答案 0 :(得分:6)

在进行转换之前,您可以将float64值与math.MaxInt64math.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)
}
  

John Weldon

我希望这能回答你的问题 此外,我真的想知道是否有更好的解决方案。 :)