C++中,浮点型往往能带来比整型更大的表示范围(存在缩放因子)。但是也存在精度上致命的缺陷。
#include <iostream>
using namespace std;
int main() {
float a = (float)2.34E+22;
float b = a + (float) 1.0;
cout << "a = " << a << endl;
cout << "b - a = " << b - a << endl;
return 0;
}
Output:
a = 2.34e+22
b - a = 0
2.34E+22表示的浮点数在小数点的左边有23位,而float的有效位只有6或7位,所以在低位上的运算被忽略了。