确保最大绝对值但保留符号的最佳方法是什么?
What is the optimal way to ensure a max absolute value, but preserve the sign?
假设我们有这样的代码;
if (x > 6) {
x = 6;
}
if (x < -6) {
x = -6;
}
我们能否将其减少为一次检查和一次更新?
我们可以这样做,但我们失去了标志。
if (abs(x) > 6) {
x = 6;
}
(我不假设任何特定语言)
使用sign
函数,你可以使用
x = sign(x) * min(6, abs(x))
或者,如果您更喜欢 copysign
函数 [where copysign(x, y) returns 一个具有 x 的大小(绝对值)但 y 的符号的浮点数],
x = copysign(min(6, abs(x)), x)
假设我们有这样的代码;
if (x > 6) {
x = 6;
}
if (x < -6) {
x = -6;
}
我们能否将其减少为一次检查和一次更新?
我们可以这样做,但我们失去了标志。
if (abs(x) > 6) {
x = 6;
}
(我不假设任何特定语言)
使用sign
函数,你可以使用
x = sign(x) * min(6, abs(x))
或者,如果您更喜欢 copysign
函数 [where copysign(x, y) returns 一个具有 x 的大小(绝对值)但 y 的符号的浮点数],
x = copysign(min(6, abs(x)), x)