Я думаю, это может сработать:
var incrementalArray = function(start, end, step) {
var arr = [];
// convert count to an integer to avoid rounding errors
var count = +((end - start) / step).toFixed();
for (var j = 0; j <= count; j++) {
var i = start + j * step;
arr.push(i);
}
return arr;
};
Выход: 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000001, 1.3, 1.4000000000000001, 1.5, 1.6, 1.7000000000000001, 1.8, 1.9000000000000001, 2, 2.1, 2.2, 2.3000000000000002, 2.4000000000000003, 2.5, 2.6, 2.7, 2.8000000000000002, 2.9000000000000003, 3
Если вы хотите, чтобы вывод был усечен до того же числа десятичных знаков, что и вход, вы можете использовать это:
var incrementalArray = function(start, end, step) {
var prec = ("" + step).length - ("" + step).indexOf(".") - 1;
var arr = [];
// convert count to an integer to avoid rounding errors
var count = +((end - start) / step).toFixed();
for (var j = 0; j <= count; j++) {
var i = start + +(j * step).toFixed(prec);
arr.push(i);
}
return arr;
};
Выход: 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0