Go float vs uint64 比较问题

时间:2020-12-21 10:03:17

标签: go floating-point

正在解决一个比较浮点数和 uint64 的问题,其中浮点数等于 MaxUint64+1。比较适用于浮点文字。但是,当将浮点数分配给变量时,比较会中断。

func main() {
    x := 18446744073709551616.0
    fmt.Println(x == 18446744073709551616.0) //true
    fmt.Println(18446744073709551616.0 > math.MaxUint64) //true
    fmt.Println(x > math.MaxUint64) //false
}

https://play.golang.org/p/O65padWxV8L

进一步挖掘表明,并非所有浮点数 > MaxUint64 都会出现此问题。当 x 分配给 18446744073709553665.0(或 MaxUint64+2050)中的任何值时,比较有效。

0 个答案:

没有答案
相关问题