float a = 123.456;printf("%11.8f\n", a);应该输出什么?

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:41:23
main()
{
float a = 123.456;
printf("%11.8f\n", a) ;
getch();
}
这个程序不是应该输出123.45600000吗?
怎么我这个编完输出个123.45600128.
谁能帮我解释下

计算机中浮点数的表示不是精确的,存在一定的误差,float类型能表达的有效数字约为7位

因为计算机存储小数的精度有限。 这个问题最容易表现在float上, double由于精度高很多,不太容易看出来

main()
{
float a = 123.456;
printf("%11.8f\n", a) ;
printf("%11.8f\n",123.456);
getch();
}
float声明的是一个大概值

printf("%11.8f\n", a) ;
该式表示以11位有效数,其中8位为小数位
但是float为浮点型数,很难确定它的后几位,因为它的精度有限