问题
我试图通过从1.20m到2.50m的仪表建立控制台中的高度列表。
我使用以下代码:

var heights = [];
for ( var i=1.20, l=2.5; i<l; i+=0.01 ){

    heights.push(i);

}

heights = heights.join('\n');
如果我console.log( heights )我得到:
1.2
1.21
1.22
1.23
...
但是然后在1.37,我开始得到:
1.37
1.3800000000000001
1.3900000000000001
1.4000000000000001
1.4100000000000001
1.4200000000000002
1.4300000000000002
问题
  • 发生了什么事?
  • 我该如何解决?

  • 演示版
    这是a demo,如果您懒得在控制台中输入它:-)

    最佳答案

    你做得很好。问题在于浮点数的不准确性。

    Why are floating point numbers so inaccurate?

    如果要显示此数字,请使用:

    heights[i].toFixed(2);
    

    请注意,toFixed()返回一个字符串,如果要执行更多的数字运算,则必须转换回浮点数(parseFloat())。

    关于javascript - 如何使用循环在javascript中将数字递增0.01?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19290628/

    10-09 15:05