我刚刚尝试使用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
进行舍入,但仅限于最接近的整数。
答案 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);
}