c++ - if 语句中有 float 的奇怪错误

标签 c++ if-statement printing floating-point cout

所以在我的 C++ 代码中,我有以下用于调试目的的代码行:

if(float1 != float2)
{
    std::cout<<float1<<" "<<float2<<std::endl;
}

发生的事情是程序正在进入 if 语句...但是当我打印出两个浮点值时,它们是相同的。但如果它们相同,那么它应该完全绕过这个 if 语句。所以我真的很困惑为什么会这样。

最佳答案

float 可能具有非常相似的值。默认情况下,I/O 库将截断浮点值的输出。您可以通过调用 std::coutprecision 成员函数来确保获得完整的精度:

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/

相关文章:

c++ - 如何在 C++ 中获取子字符串并在字符串之间添加字符

iphone - 如何使用Cocos2D制作没有瓦片 map 的滚动游戏?

javascript - 基本 if 语句 脑放屁 HTML javascript

c - 检查非零的惯用方法

c# - 重复的 if 语句常量是 "reused"吗? C# .NET

linux - Linux 汇编中的整数打印

c++ - 被 system() 搞砸了\n\r\t

c++ - 将#define'd char* 转换为枚举值

javascript - 打印 Gridview - 如何使用分页符在每页上打印 n 行

java - 从 Java 打印 JTable