gpt4 book ai didi

c - "clip"重复某个范围的值的最有效方法?

转载 作者:行者123 更新时间:2023-11-30 15:07:55 25 4
gpt4 key购买 nike

给定一个值n,将其放入[min, max]范围内的最有效方法是什么,这样它将在该范围内重复,如果它超出了它吗?

我不知道这个术语,所以很难表达这个问题,但也许真值表可能会有所帮助:

其中 min = -2max = 3

 input  --> output
-6 0
-5 1
-4 2
-3 3
-2 -2
-1 -1
0 0
1 1
2 2
3 -2
4 -1
5 0
6 1

到目前为止我所拥有的是:

(value - min) % (max - min) + min;

这是有效的,但我担心模数运算符 % 对于负输入来说是不可靠的,根据我的阅读(输出变成实现定义,使其无用,或者至少不可移植)

最佳答案

是这样的:

min = VALUE;
max = VALUE;
x = (((x - min) + 1) % (max - min)) + min

当您重复最后一行代码时,x 将位于 min 和 max - 1 内

编辑:

并匹配您的确切表格:

output = (input - min) % (max - min) + min;

编辑2:

如果没有为负数定义模数:

if (input >= min)
output = (input - min) % (max - min) + min;
else
output = max - ((max - input) % (max - min));

关于c - "clip"重复某个范围的值的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37804775/

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