在 C++ 中,由于 float 和 double 的精度有限,我使用以下代码计算出误差的数量级:
float n=1;
float dec = 1;
while(n!=(n-dec)) {
dec = dec/10;
}
cout << dec << endl;
(在双重情况下,我所做的只是在第 1 行和第 2 行用 double 交换浮点数)
现在,当我在 Unix 系统上使用 g++ 编译和运行它时,结果是
Float 10^-8
Double 10^-17
但是,当我在 Windows 7 上使用 MinGW 编译和运行它时,结果是
Float 10^-20
Double 10^-20
这是什么原因?