双倍可以超过自身吗?

时间:2015-03-10 22:34:44

标签: c++ floating-point

我知道operator ==可以在两个具有相同内容的double(或float)值上返回false,cf c++ comparison of two double values not working properly,但是大于运算符(>)的值可以返回true好 ?

1 个答案:

答案 0 :(得分:1)

你的问题似乎措辞不好,但无论如何让我试试。代码如

double x = 0.6;
double y = 0.1 + 0.2 + 0.3;

可能导致x == y为真或假。如果以6位精度打印x和y,它们可能看起来具有相同的值,但机器存储的数字超过6位。您可以通过执行类似

的操作来查看完整值
union {
   double d;
   char hex[ sizeof(double) ];
} u;
u.d = x; print u.hex[]
u.d = y; print u.hex[]

很多时候hex []值不匹配,然后operator ==将返回false。通常如果==返回false,则表示>或者<将是真的。有一些晦涩的例外。