gpt4 book ai didi

javascript - 检查数字是否在循环模数集范围内的优雅方法?

转载 作者:行者123 更新时间:2023-11-30 13:50:33 25 4
gpt4 key购买 nike

我的数学词汇真的很不稳定,但我很清楚自己在寻找什么,所以请原谅这个标题。

假设我有一组从 0.00 到 0.99 的循环数字。这意味着数字等于 1 时回绕到 0。所以 1 实际上等于 0(或 1 % 1)和 1.1 实际上等于 0.1(或 1.1 % 1)。

现在,给定这个集合中的一个数字 (setPoint),以及一个代表范围长度一半的数字 (halfRangeLength),我想看看是否一个数字 (number) 是否在该范围内。

const isInSetRange = (setPoint, halfRangeLength, number) => {
// Returns => boolean ... number is between min (inclusive) and max (exclusive)

return (number >= setPoint - halfRangeLength) && (number < setPoint + halfRangeLength)
}

例如:

isInSetRange(0.5, 0.1, 0.45) 
// => true, 0.45 is between 0.4 and 0.6

现在,问题就出在这里了。

如何在数字集的边缘实现以下结果?

isInSetRange(0, 0.1, 0.95) 
// => true, 0.95 is between 0.9 and 0.1

isInSetRange(0.9, 0.2, 0) 
// => true, 0 is between 0.7 and 0.1

我真的缺乏进入这个领域的数学背景。如果有人可以使用与 javascript 共享公共(public)数学库的任何编程语言提供帮助,我将不胜感激。

谢谢!

最佳答案

如果 halfRangeLength 会导致低/高值超出 0...1 范围,只需在函数中移动 setPoint 和值

似乎适用于示例数据

const isInSetRange = (setPoint, halfRangeLength, number) => {
let low = setPoint - halfRangeLength;
let high = setPoint + halfRangeLength - 1;
if (low < 0) {
setPoint -= low;
number = (number - low) % 1;
} else if (high > 0) {
setPoint -= high;
number = (1 + number - high) % 1;
}
return (number >= setPoint - halfRangeLength) && (number < setPoint + halfRangeLength)
}



console.log(isInSetRange(0.5, 0.1, 0.45))
console.log(isInSetRange(0, 0.1, 0.95))
console.log(isInSetRange(0.9, 0.2, 0))

关于javascript - 检查数字是否在循环模数集范围内的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58351169/

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