我知道operator ==可以在两个具有相同内容的double(或float)值上返回false,cf c++ comparison of two double values not working properly,但是大于运算符(>)的值可以返回true好 ?
答案 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,则表示>或者<将是真的。有一些晦涩的例外。