如何解决-= 0.1奇异结果[重复]
| 这个问题已经在这里有了答案:解决方法
您正在看到计算机进行浮点运算的方式的伪像。参见例如http://en.wikipedia.org/wiki/Floating_point#Machine_precision
,这样可以解决你的问题
http://jsfiddle.net/AVPNx/
var n = 1;
while ( n > 0 ){
n -= 0.1;
result = n.toFixed(1);
document.body.innerHTML += result + \"<br/>\";
}
,从浮点指南:
为什么我的数字(例如0.1 + 0.2)加起来是一个不错的0.3轮,并且
相反,我得到一个奇怪的结果
0.30000000000000004?
因为在内部,计算机使用
格式(二进制浮点数)
无法准确表示数字
像是0.1、0.2或0.3
当代码被编译或
解释,您的“ 0.1”已经
四舍五入到最接近的数字
格式,导致
舍入误差甚至在
计算发生。
,您正在处理一个浮点数。查看toFixed和toPrecision方法。
,即使数字具有十进制表示法的简单表示,也不是所有数字都可以准确表示。这是因为JavaScript使用IEEE 754表示浮点值,因此使用基数2而不是基数10。这使您实际上并未减去0.1(即使您的源代码是这样),但实际上却减去了0.1。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。