1
pangtianyu 2015-06-17 20:04:36 +08:00
在计算机里面带小数点的运算是 approximate 的 不是精确的
可以参考这里: http://www.zhihu.com/question/31182792 还有 https://zh.wikipedia.org/wiki/%E6%B5%AE%E7%82%B9%E6%95%B0 顺便结果: > .1+.2 0.30000000000000004 > .3 0.3 |
2
YuJianrong 2015-06-17 20:27:13 +08:00 1
@pangtianyu 这个说法并不十分准确。
准确地说是部分十进制小数没有有限位数的IEEE754浮点二进制表达。 所以: 1. 如果相加的两个小数(以及结果)都能被有限位数(而且在 float/double 位数内)浮点二进制表达,那么结果是精确的。 比如 0.25 + 0.5 === 0.75 这是绝对精确的。 2. 如果相加的两个小数并没有有限位数的 IEEE754浮点二进制表达(比如0.1的浮点表达为1.(1001) *2^(-4) ,其中1001为循环节),那么相加的结果就很有可能不符合预期,因为很难加到同样是数值近似的结果上。 参考 https://zh.wikipedia.org/wiki/IEEE_754 |
3
pangtianyu 2015-06-17 20:29:29 +08:00
@YuJianrong 啊 是这样嘛 受教了
|
4
blacktulip 2015-06-17 20:37:53 +08:00
二进制十进制来回转换的问题
|