确保最大绝对值但保留符号的最佳方法是什么?

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)