C语言浮点数学输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 17:33:12
#include<stdio.h>
void main()
{ float a,b;
a=31.1111; b=28.333;
printf ("%f\n",a+b,);
}
结果变成59.444099
请问不是说有效数字能表示7位吗这里为什么从才表示5位后面就变有误差了

这个呀,只能从实际出发,
如果你要的是7位,你可以定义,a,b为double类型就可以了!!

如果你把这个结果四舍五入到7位有效数字,就是59.44410,并没有错啊。
浮点数的误差,来源于二进制方式表示小数的问题,对于十进制来说,两位小数就能表示的数,用二进制可能需要六七位,而浮点数的长度是有限的,所以就产生了误差。这个误差并不是上面有人说的是随机的,这个误差是固定的。

那是因为你b只精确到后三位,所以之后的系统就随即了,每次运行的结果有可能都不一样