代码
#include <iostream>
int main(int argc, const char * argv[]) {
using namespace std;
float a = 2.34E+22f;
float b = a + 1.0f;
cout << "a = " << a << endl;
cout << "b - a = " << b - a << endl;
return 0;
}
运行结果
a = 2.34e+22
b - a = 0
分析
该程序将数字加1,然后减去原来的数字。结果应该为1。但运行结果为0,问题在于,2.34E+22是一个小数左边有23位的数字。加上1,就是在第23位加1。但float类型只能表示数字中的前6或前7位,因此修改第23位对这个值不会有任何影响。