【发布时间】:2016-06-14 06:45:41
【问题描述】:
给定一个值n,将其置于[min, max] 范围内的最有效方法是什么,这样如果超出该范围,它将在该范围内重复?
我不知道这个术语,所以很难说出这个问题,但也许真值表可能会有所帮助:
min = -2 和 max = 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;
这可行,但我担心的是模数运算符 % 对于负输入不可靠,从我读到的内容(输出变成实现定义,使其无用,或至少不可移植)
【问题讨论】:
-
为什么不取绝对值的模数?
-
显示您尝试过的内容。
-
这是您正在寻找的方程式吗?
x % (max - min) + min -
@MichaelWalz - 我添加了它,还修复了真值表(最后三个条目不正确)
-
3 的输出不应该是 3...???!!!!