#include<stdio.h>
void main()
{
float a ,b;
a=123456.789e5;
b=a+20;
printf(“%f\n”,b);
}
问题:
(1)得出的结果让我很迷糊,是“12345678848.000000”。这个数怎么得出来的?!
(2)书上说一个float只能保证有的有效数字是7位,是前七位吧?!那后面的怎么办呢?!
(3)结果的小数点后面还有那一串6个0是什么?!
谢谢指教….
>> 本文固定链接: http://www.vcgood.com/archives/3239
float精确到小数点后面6位
float为单精度,有效数字就是7位,取前七位,因为输入时为十进制,而计算机存储为二进制,所以取前七位(正确数字)。后面因十进制和二进制转换而出现的进制转换错误,所以会出现输出错误数据。
C里规定浮点型数据小数点后面取6位,单精度是,双精度同样也是取6位,即后面的6位小数,如果数据没有小数部分,同样在后面加6位(即6个0),如果数据有小数部分,且总长度不超过6位,取所有小数部分,后面补0。