go - Go float vs uint64 比较问题
问题描述
处理一个比较浮点数和 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)中的任何值时,比较有效。
解决方案
推荐阅读
- sql - SQL基于多列查找组中的最佳行?
- ios - 从 URLSession.shared.dataTask 获取当前进度
- sql - SQL ERROR CODE1222 多选状态
- sql - SQL 行操作
- javascript - 管理 sidenav 中的下拉列表
- django - 从 Django Rest Framework SIMPLE JWT 令牌(第 3 方)获取中间件中的用户名
- r - geom_text 和暂停动画的问题
- wordpress - 简单 LDAP 登录:简单 LDAP 登录无法验证您的凭据 - 简单 LDAP 插件
- python - MontagePy-1.0.1-cp36-cp36m-manylinux1_x86_64.whl 不是这个平台支持的轮子
- ios - NSFileProviderItem 下载徽章始终可见