<分区>
Possible Duplicate:
Is JavaScript’s Math broken?
在 Javascript 中,我不明白为什么 230/100*100
返回 229.99999999999997
,而 240/100*100
返回 240.
这也适用于 460、920
等等...
有什么解决办法吗?
<分区>
Possible Duplicate:
Is JavaScript’s Math broken?
在 Javascript 中,我不明白为什么 230/100*100
返回 229.99999999999997
,而 240/100*100
返回 240.
这也适用于 460、920
等等...
有什么解决办法吗?
最佳答案
230/100*100
= (230 / 100) * 100
= 2.3 * 100 in binary
2.3 二进制是循环十进制:10.01001100110011001100110011001100...
由于精度有限,这个循环小数无法准确表示,我们得到类似2.29999999981373548507...
。
有趣的是,如果您选择这样的除法运算,它可以准确表示(不是循环小数,并且所有数字都在 FP 标准所容纳的最大有效数字范围内) 在二进制文件中,您不会看到任何此类差异。
例如225/100*100
= 225
2.25
二进制为 10.01
Test Conversion: Binary to/from Decimal
在检查浮点值之间的相等性时,始终注意精度。向上/向下舍入到一定数量的有效数字是一种很好的做法。
关于javascript - 为什么 230/100*100 不返回 230?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13248173/
相关文章:
javascript - 如何安全地将 HTML 从模型绑定(bind)到 View
javascript - 避免前瞻正则表达式中的长模式重复 - 如何简化?
java - 1000位的字符串,使用substring方法在没有数组的情况下找到最大的5位
swift - 将整数写成十六进制、八进制和二进制有什么意义?
javascript - Google 表格 API v4 : Add named or protected ranges
java - 数字格式异常 : Invalid int as a result of converting string containing binary digita to decimal