根据 cppreference round 的行为如下
double round(double x)
{
return signbit(x) ? ceil(x - 0.5) : floor(x + 0.5);
}
我想知道
ceil(x - 0.5)
和 floor(x + 0.5)
有什么区别?
看起来他们的行为是平等的:
x = -0.1;
ceil(-0.1 - 0.5) => 0
floor(-0.1 + 0.5) => 0
x = -0.8;
ceil(-0.8 - 0.5) => -1
floor(-0.8 + 0.5) => -1
结果好像是一样的
除了操作本身的不同之外,没有太大的区别。选择最适合使用 x 的上下文的一项。除非您使用大于 1 的数字进行运算,否则两者实际上不会有所不同,此时变量量将足够大以创建不同的输出。