1浮点型小数点后都有6位小数吗?

问题描述:

1浮点型小数点后都有6位小数吗?
float i=23.56;
printf("%f\n",i);
这个程序输出得23.559999,为什么会这样呢
1个回答 分类:综合 2014-11-26

问题解答:

我来补答
计算机中,浮点形变量是用二进制记录的,而不是十进制
也就是说,在内存中,十进制浮点23.56被记录成了二进制科学计数法2^4*(1.01111000111……)2
(111)2表示二进制数111
由于23.56无法用二进制表示成有限小数,而计算机只可能记录有限的位数,因此记录的时候不可避免会有一定误差
输出的时候,再由二进制转换为十进制,就会出现上面的结果了
至于输出了小数点后6位,这与所输出的数本身的精度无关,纯粹是printf函数在没有指定输出精度的时候默认的
假如你想输出到小数点后3位,可以这样:
printf("%.3f\n",i);
这样就会输出成23.560
 
 
展开全文阅读
剩余:2000
上一页:示意图也请画出
下一页:拜托详细解答