所以在我的 C++ 代码中,我有以下用于调试目的的代码行:
if(float1 != float2)
{
std::cout<<float1<<" "<<float2<<std::endl;
}
发生的事情是程序正在进入 if 语句...但是当我打印出两个浮点值时,它们是相同的。但如果它们相同,那么它应该完全绕过这个 if 语句。所以我真的很困惑为什么会这样。
最佳答案
float
可能具有非常相似的值。默认情况下,I/O 库将截断浮点值的输出。您可以通过调用 std::cout
的 precision
成员函数来确保获得完整的精度:
if(float1 != float2)
{
std::cout.precision(9);
std::cout<<float1<<" "<<float2<<std::endl;
}
现在您应该看到区别了。值 9
是 IEEE 754 32 位 float 可表示的 base-10 数字的数量(请参阅下面的@EricPostpischil 的评论)。
关于c++ - if 语句中有 float 的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659717/