将0.02添加到javascript中的数字会导致不正确的值

将0.02添加到javascript中的数字会导致不正确的值,javascript,Javascript,我试图以十进制间隔从一些min到max获取一个数字数组,在本例中为0.02,例如:1.00,1.02,1.04,1.06 以下代码在编号1.14处开始中断: function getOptions(min, max, interval) { var options = []; for (var i = min; i <= max; i += interval) { options.push(i); } return options; } var options

我试图以十进制间隔从一些
min
max
获取一个数字数组,在本例中为0.02,例如:
1.00,1.02,1.04,1.06

以下代码在编号
1.14处开始中断:

function getOptions(min, max, interval) {
  var options = [];

  for (var i = min; i <= max; i += interval) {
    options.push(i);
  }

  return options;
}

var options = getOptions(1.0, 1.4, 0.02);
是什么原因导致此问题?我如何解决此问题?

请参见:

在内部,计算机使用的格式(二进制浮点)根本无法准确表示0.1、0.2或0.3这样的数字

在编译或解释代码时,您的“0.1”已经四舍五入到该格式中最接近的数字,这甚至会在计算之前产生一个小的四舍五入错误

用于:

JavaScript数字实际上只是IEEE-754规定的浮点。由于在以基数2表示数字时存在不相等的情况,以及有限机器的情况,我们只能使用一种充满舍入错误的格式。本文解释了这些舍入错误以及错误发生的原因。始终使用一个好的数字库,而不是构建自己的数字库


我已经在这方面取得了一些成功,更小更快。

尝试-
options.push(parseFloat(I.toFixed(2))
,其中
toFixed(n)
将输入转换为
string
保留
n
小数。@BatScream,这是我的答案。事实上,在发布问题之前,我使用了
options.push(I.toFixed(2)
,但我的循环不起作用,因为它不包含在
I上
[
    1, 
    1.02, 
    ...
    1.12, 
    1.1400000000000001, 
    1.1600000000000001
    ...
]