四舍五入正数或负数
Rounding a Positive or Negative Number
我需要对一个数字进行四舍五入,但我不知道该数字是正数还是负数。
有没有更好的方法来舍入 foo
来做到这一点:
static_cast<int>(foo > 0 ? foo + 0.5 : foo - 0.5)
基本上我想要这种行为:
3.4 => 3
3.5 => 4
-3.4 => -3
-3.5 => -4
对于 C++,有一个:std::lround
在 C 数学库中,
double round (double x);
或者有,
double nearbyint (double x);
回到老派的 C 技巧,依靠 bool
转换为 1 if true
和 0 if false
:
static_cast <int>(foo + 0.5 - (foo < 0.0))
你一般应该使用库函数,但是如果是临界区你可以针对它进行性能测试
我需要对一个数字进行四舍五入,但我不知道该数字是正数还是负数。
有没有更好的方法来舍入 foo
来做到这一点:
static_cast<int>(foo > 0 ? foo + 0.5 : foo - 0.5)
基本上我想要这种行为:
3.4 => 3
3.5 => 4
-3.4 => -3
-3.5 => -4
对于 C++,有一个:std::lround
在 C 数学库中,
double round (double x);
或者有,
double nearbyint (double x);
回到老派的 C 技巧,依靠 bool
转换为 1 if true
和 0 if false
:
static_cast <int>(foo + 0.5 - (foo < 0.0))
你一般应该使用库函数,但是如果是临界区你可以针对它进行性能测试