我正在尝试一个简单的 for 循环,但得到了奇怪的结果。我按小数点 (.02) 递增,但似乎添加不正确。
这是循环:
for ( var a = 0; a <= 10; a += .02 ) {
console.log(a);
}
结果还不错..
0, 0.02, 0.04, 0.06, 0.08, 0.1
然后它变得有点奇怪:
0.12000000000000001
然后它变得非常遥远:
0.19999999999999998 ... 9.999999999999876
除了奇数小数加法之外,它还没有达到我的最终目标 10。
我试过了 for (var a = 0; a <= 10; a = (Math.round(a * 100)/100) + .02 )
(这让我最接近但仍然运行奇怪),parsefloating a,even a += 2/100。
while 循环的结果相同。
任何想法都会很棒!
编辑:虽然这篇文章“How to deal with floating point number precision in JavaScript?”中有一些浮点精度的解决方法 - 我不确定有多少适合循环构造
最佳答案
你可以使用toFixed(2)
for ( var a = 0; a <= 10;) {
console.log(a);
a += 0.02;
a = +a.toFixed(2)
}
// Another possible way is
var limit = 10;
var increment = 0.02;
for ( var a = 0; a <= limit * 100; a += increment * 100) {
console.log(a / 100);
}
关于javascript - 简单的 for 循环让我陷入循环 - 小数增量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50360892/