gpt4 book ai didi

javascript - 具有不精确二进制表示的递增 float 数组

转载 作者:行者123 更新时间:2023-11-29 18:34:36 25 4
gpt4 key购买 nike

我想要一个创建递增 float 数组的函数。当增量不能用二进制精确表示时,我遇到了问题。一个增量为 0.1 的示例,其二进制表示是无限重复的。

var incrementalArray = function(start, end, step) {
var arr = [];
for (var i = start; i <= end; i += step) {
// 0.1 cannot be represented precisely in binary
// not rounding i will cause weird numbers like 0.99999999
if (step === 0.1) {
arr.push(i.toFixed(1));
} else {
arr.push(i);
}
}
return arr;
};

这个实现有两个问题。 A) 只涵盖增量为0.1的情况。难道没有许多其他具有重复二进制表示的魔数(Magic Number)吗? B) 增量为0.1时返回的数组不包含结束值。但是,当增量不是这样时,它确实包含结束值,从而使该函数不可预测。

incrementalArray(0.0, 3.0, 0.1);
// [0.0, 0.1, 0.2, .... 2.8, 2.9]

incrementalArray(2,10,2);
// [2, 4, 6, 8, 10]

此函数如何适用于所有特殊增量并可预测?

最佳答案

如果您将自己限制在有理数范围内,则可以用整数表示步骤,并将整数索引除以单个分母,同时将每个条目转换为 float (如果您必须采用这种形式)。

关于javascript - 具有不精确二进制表示的递增 float 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com