【发布时间】:2013-05-20 23:07:12
【问题描述】:
所以在我的 C++ 代码中,我有以下代码行用于调试目的:
if(float1 != float2)
{
std::cout<<float1<<" "<<float2<<std::endl;
}
发生的事情是程序正在进入 if 语句......但是当我打印出两个浮点值时,它们是相同的。但如果它们相同,那么它应该完全绕过这个 if 语句。所以我真的很困惑为什么会这样。
【问题讨论】:
-
重复了这么多问题,所有问题都以这个为主要答案:docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
-
他们不一样。
-
@chris:Goldberg 的论文可能有点矫枉过正。关键是恰好以相同方式显示的浮点值不一定相等。修改输出语句以显示更精确,您会发现它们是不同的。浮点运算是不精确的。
-
@KeithThompson,是的,很多,但它几乎是提供信息的链接。当然,在提问之前搜索相关问题会给出一些很好的现场解释。
-
@chris 只提供晦涩难懂的文章作为简单问题的答案,这就是迷信是如何产生的。
标签: c++ if-statement printing floating-point cout