差异在于返回值,我相信这种情况会给平局提供输入,例如以下代码:
int main()
{
std::cout.precision(100);
double input = std::nextafter(0.05, 0.0) / 0.1;
double x1 = floor(0.5 + input);
double x2 = round(input);
std::cout << x1 << std::endl;
std::cout << x2 << std::endl;
}
输出:
1
0
但是最终它们只是不同的结果,一个选择了自己喜欢的一个。我看到许多使用floor(0.5 + input)
而不是的“旧” C / C ++程序round(input)
。
有什么历史原因吗?最便宜的CPU?