clang-tidy [bugprone-incorrect-roundings]检查的文档说:
数字 0.499999975(小于 0.5 的最小可表示浮点数)四舍五入为 1.0
据我所知,下面的最小浮点数0.5
是0.4999999702
,而不是0.499999975
。但尽管如此,这两个数字都为我提供0
了天真的四舍五入计算的值:
#include <iostream>
int main() {
const float v1 = 0.499999975;
const float v2 = 0.4999999702;
std::cout << (int)(v1+0.5) << "\n"
<< (int)(v2+0.5) << "\n";
}
我错过了什么吗?