これは、Windows 8.1 64 ビットIntel Core i-7 マシンでTDM-GCC 5.1 32 ビット(gcc-5.1.0-tdm-1-core) を使用してコンパイルしている C++ の単純なコードです。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a, b;
a = 0.002;
b = 0.004;
cout << std::sqrt(a*a+b*b)<< endl;
return 0;
}
しかし、実行すると、次の出力が得られます
nan
ただし、32 ビット マシン上の TDM-GCC 32 ビット コンパイラでは正しく動作します。
また、データ型をfloatに変更すると、32 ビットと 64 ビットの両方のコンピューターで正しく動作します。
ここで何が問題なのですか?