math - 确保最大绝对值但保留符号的最佳方法是什么?
问题描述
假设我们有类似的代码;
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
函数 [其中 copysign(x, y) 返回具有 x 的大小(绝对值)但符号为 y 的浮点数],
x = copysign(min(6, abs(x)), x)
推荐阅读
- android - FileOutputStream("dest_path") 在 android 9 (pie) 中抛出异常
- python - 如何阻止我的 Runge-Kutta2 (Heun) 方法爆炸?
- python - Python PyQt5 创建布局
- faunadb - 我怎样才能获得动物数据库文档的更改历史记录?
- excel - 将特定列从一个 Excel 工作表复制到另一个工作表
- variables - 为什么这会无缘无故地忽略我的变量?
- python - 使用可变默认参数,如何从函数外部访问对象?
- android - ExoPlayer 通知管理器,隐藏快退和快进按钮
- android - ItemTouchHelper.SimpleCallback 以编程方式滑动
- python - 使用 numpy.dot(m1, m2) 与 m1.dot(m2) 的矩阵乘法之间的差异