今天担任助教的时候,负责实验,学生提问到了一个关于float和double的精度问题。
例如:
查了相关资料,发现float的有效位为6.
即若
float x=1234567890;
则x的实际有效数字实际上是7位
即
x属于1234567000到1234567999之间的随机一个数字
这里是有效位的概念,和精度无关,即和float能够表示的数字范围无关。
换个方式来说,float能表示的某个范围中,是有一些的数字不能精确表示出来的。
b=99999999999;
c=99999999921;
printf("%f\n",b);
printf("%f\n",c);
输出的b和c都是:
![C++的float精度问题 - 天际红尘 - 天际红尘 C++的float精度问题 - 天际红尘 - 天际红尘](http://img1.ph.126.net/KSsKBhe8Xypy6ooJ6A6AgQ==/3137038615540510849.png)