首页 > 用户发贴区 > 编程问题提问区 > 请教浮点数据的问题
2009
07-04

请教浮点数据的问题

#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是什么?!


谢谢指教….


请教浮点数据的问题》有 2 条评论

  1. Freeze 说:

    float精确到小数点后面6位

  2. jumby 说:

    float为单精度,有效数字就是7位,取前七位,因为输入时为十进制,而计算机存储为二进制,所以取前七位(正确数字)。后面因十进制和二进制转换而出现的进制转换错误,所以会出现输出错误数据。
    C里规定浮点型数据小数点后面取6位,单精度是,双精度同样也是取6位,即后面的6位小数,如果数据没有小数部分,同样在后面加6位(即6个0),如果数据有小数部分,且总长度不超过6位,取所有小数部分,后面补0。

留下一个回复