Phi*_*zen 5 javascript floating-point firefox internet-explorer google-chrome
在开发Measurement.js时,TDD 的乐趣帮助我偶然发现了 JavaScript 引擎中暴露的一种非常奇怪的行为(至少我是这样认为的)。
\n\n无论是输入控制台还是在脚本内执行,都会发生以下情况:
\n\n-1 + 0.85 --> -0.85 \xe2\x9c\x93 \n-1 + 1 --> 0 \xe2\x9c\x93 \n-1 + 1 + -.15 --> 0.15 \xe2\x9c\x93\n-1 + 1.15 --> 0.1499999999999999 ?!?\n
Run Code Online (Sandbox Code Playgroud)\n\n这是在以下浏览器/操作系统下进行测试和准确复制的:
\n\n由于这在不同的供应商中是一致的,我认为这一定有一个特定的原因,所以:
\n\n更新:
\n最好的通俗易懂的解释,包括。到目前为止,多种编程语言的答案和解决方法可以在
\n http://floating-point-gui.de/找到 (感谢 @RocketHazmat)
不,呃。你尝试以二为基数进行数学计算。
简短的回答:你做不到。这就像尝试重复添加十进制的 1/3。你得到 0.333333,然后是 0.666666,然后是 0.99999...但是最后一个不应该是 3/3,换句话说就是 1 吗?
为了避免这个问题,请尽可能使用整数。
归档时间: |
|
查看次数: |
2772 次 |
最近记录: |