В C ++ я использую следующий код, чтобы определить порядок величины ошибки из-за ограниченной точности float и double:
float n=1;
float dec = 1;
while(n!=(n-dec)) {
dec = dec/10;
}
cout << dec << endl;
(в двойном случае все, что я делаю, это exchangefloat с double в строках 1 и 2)
Теперь, когда я компилирую и запускаю это с помощью g ++ в системе Unix, получаются
Float 10^-8
Double 10^-17
Однако, когда я компилирую и запускаю его сMinGW на Windows 7, результаты
Float 10^-20
Double 10^-20
В чем причина?