我有下面的代码是展示一些非常奇怪的行为。有没有人有任何想法为什么。C++比较函数结果
#include <iostream>
long global = 20001;
double foo() {return global/1000.0;}
int main(int,char**) {
if (foo() == foo()) {
std::cout << "true\n";
} else {
std::cout << "false\n";
}
return 0;
}
为函数返回相同的结果每次而是打印假这应该打印正确;
这是在Solaris 10上使用G ++ 我不知道该操作系统的事,但我还没有机会去尝试不同的OS
试试这个: flost epsilon = 0.001f; if(foo() - foo()ε .... – AdamF
我编译你的代码并收到'true'的响应。我使用gcc 4.6.3运行Ubuntu 12.04。它看起来像操作系统可能很重要。 – Kevin
我在Fedora上用g ++得到'true' – Octopus