level 3
我只是在测试误差,代码如下:
#include <stdio.h>
void main()
{
int n = 100000000;
double sum = 0;
for( int i=0 ; i<n ; i++ )
sum = sum+0.0005;
printf("%lf\n",sum);
}
最后算出来sum = 50000.000013
谁能解释下原因
2013年06月12日 01点06分
1
level 9
浮点数不是精确值,没有一个double值可以精确等于0.0005。
2013年06月12日 01点06分
2
level 6
这跟浮点数的存储方式有关,浮点数存储只是近似值,并不是精确值。。
2013年06月12日 06点06分
6