问一个关于c语言计算误差的问题
c语言吧
全部回复
仅看楼主
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 11
RTFM
2013年06月12日 02点06分 3
level 9
好吧
我承认我无知了
[狂汗]
2013年06月12日 05点06分 4
level 6
据说浮点型数字有时候存储的只是一个近似值
2013年06月12日 05点06分 5
level 6
这跟浮点数的存储方式有关,浮点数存储只是近似值,并不是精确值。。
2013年06月12日 06点06分 6
1