我尝试了一个简单的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 )
(这让我最接近,但仍然是奇数),解析a,甚至是+ = 2/100。
while循环中的结果相同。
任何想法都会很棒!
编辑:虽然在这篇文章中有一些关于浮点精度的解决方法&#34; How to deal with floating point number precision in JavaScript?&#34; - 我不确定在循环结构中有多少优雅适合
答案 0 :(得分:2)
您可以使用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);
}