舍入正数或负数

Rounding a Positive or Negative Number

本文关键字:舍入      更新时间:2023-10-16

我需要对一个数字进行四舍五入,但我不知道这个数字是负数还是正数。

有没有比更好的方法来绕过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技巧,如果true,则bool转换为1,如果false:,则转换为0

 static_cast <int>(foo + 0.5 - (foo < 0.0))

您通常应该使用库函数,但如果它是

的关键部分,则可以对此进行性能测试

在C数学库中,有

double round  (double x);

或者有

double nearbyint  (double x);