首页 > 解决方案 > 确保最大绝对值但保留符号的最佳方法是什么?

问题描述

假设我们有类似的代码;

if (x > 6) {
    x = 6;
}
if (x < -6) {
    x = -6;
}

我们可以将其减少为一次检查和一次更新吗?

我们可以这样做,但我们失去了标志。

if (abs(x) > 6) {
    x = 6;
}

(我没有假设任何特定的语言)

标签: mathabsolute

解决方案


使用该sign功能,您可以使用

x = sign(x) * min(6, abs(x))

或者,如果您更喜欢copysign函数 [其中 copysign(x, y) 返回具有 x 的大小(绝对值)但符号为 y 的浮点数],

x = copysign(min(6, abs(x)), x)

推荐阅读