javascript - 简单的 for 循环让我陷入循环 - 小数增量错误

标签 javascript

我正在尝试一个简单的 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/

相关文章:

javascript - 自定义javascript确认对话框

javascript - 如何检测div元素溢出?

javascript - 将照片附加到调查回复的脚本

javascript - 更改日期范围选择器中的月份位置

javascript - 在 modal/div 中显示 ajax 响应 - 当响应为网页形式时

javascript - 将 2 个数字组合起来用作对象的键的有效方法是什么?

javascript - 尝试使用 javascript + html 返回上一页

javascript - 重构链式 RxJs 订阅

javascript - 这个范围在一个简单的 React 组件中

javascript - 模板渲染后的 Angular 变化检测