增加< 1在Javascript中

时间:2016-12-20 00:18:09

标签: javascript floating-point

我刚刚尝试使用for循环,并在将增量值更改为i += 0.1时发现了这一点。

for (i = 0; i < 100; i += 0.1) {
    console.log(i);
}

在控制台中返回

0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999

到达100时

99.69999999999861
99.7999999999986
99.8999999999986
99.9999999999986

这背后的原因是什么? 我想如果你想搜索一个数字,这将是令人沮丧的。有没有办法绕到最近的10号?我知道如何使用Math.floor, ~~, a | 0进行舍入,但仅限于最接近的整数。

2 个答案:

答案 0 :(得分:1)

我猜你正在寻找这样的东西:

for (i = 0; i < 100; i += 0.1) {
    console.log(Math.round(i * 100) / 100);
}

答案 1 :(得分:0)

简单解决方案:乘以10,加1,除以10。

for (var i = 0; i < 100; i = (i * 10 + 1) / 10) {
  console.log(i);
}

for (var i = 0; i < 100; i = (i * 10 + 1) / 10) {
      console.log(i);
    }