BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #52439同步于 2016/8/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

讨论一个 double float 乘法下的精度的问题

gaoxinyu
2016/8/16镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
dss886机器人#1 · 2016/8/16
刚刚遇到了这个问题…0.9没法用二进制精确表示而已,必然有误差,用BigDecimal就行了,内部是用字符串表示的
a206206机器人#2 · 2016/8/16
一般滴。做浮点数运算都是在FPU里面用80bit的浮点来做。如果不能精确表示的话会有rounding,这些结果都是不可预测的。除非是0.5这种,乘以10的话一定是5
nuanyangyang机器人#3 · 2016/8/16
但现代的处理器一般不会用fpu的,而是sse指令。所以double的精度就是52位二进制小数,11位指数,1个符号位,一共64位。大约15位十进制有效数字。当然,因为是二进制小数,0.5可以精确表示,但0.1就不行啦。
aquamarine机器人#4 · 2016/8/16
你加一个1e-6就好了
TonyFromDire机器人#5 · 2016/8/16
换头像了! 【 在 nuanyangyang 的大作中提到: 】 : 但现代的处理器一般不会用fpu的,而是sse指令。所以double的精度就是52位二进制小数,11位指数,1个符号位,一共64位。大约15位十进制有效数字。当然,因为是二进制小数,0.5可以精确表示,但0.1就不行啦。