C++ では、次のコードを使用して、float と double の精度が限られているため、エラーの大きさの順序を計算します。
float n=1;
float dec = 1;
while(n!=(n-dec)) {
dec = dec/10;
}
cout << dec << endl;
(ダブルの場合、行 1 と 2 でフロートをダブルと交換するだけです)
Unix システムで g++ を使用してこれをコンパイルして実行すると、結果は次のようになります。
Float 10^-8
Double 10^-17
ただし、Windows 7 で MinGW を使用してコンパイルして実行すると、結果は次のようになります。
Float 10^-20
Double 10^-20
これの理由は何ですか?