【发布时间】:2020-10-07 17:44:00
【问题描述】:
不明白,为什么std::rintf会返回如下结果(g++ 7.3.0):
cout << rintf(14.5f) << endl;
cout << rintf(15.5f) << endl;
cout << rintf(16.5f) << endl;
结果:
14
16
16
源数字可以精确地存储在浮点数中,所以这不应该是计算问题。
我检查了源代码,它使用了__builtin_rintf。
当然,我可以编写自己的函数,但是这个问题让我很困扰。
【问题讨论】:
-
运行
std::fgetround()时返回什么? -
如果您想要 14、15、16 作为结果,请使用
round而不是rint。