我有下面的代碼是展示一些非常奇怪的行爲。有沒有人有任何想法爲什麼。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