房天下 > 房天下问答 > 业主生活 > 其他
  • C语言中浮点数float和double输出的问题

    #include<stdio.h>void main(){ float num; double dnum; num=563.23; dnum=78954327.07; printf("num=%f",num); printf("\ndnum=%lf",dnum);}执行结果:num=563.229980dnum=78954327.0700000我想请问如上题,书上写float单精度浮点型提供7个有效数字,而double双精度浮点型提供15到16位有效数字。那怎么输出结果会是这样?位数是不是多了?请知道的大侠们帮帮忙,小女子先谢过了~

    提问者:qfly323

    发布于2011-01-20

共1个回答
  • 月下霓裳 丨Lv 2
    类型 比特数 有效数字 数值范围 float 32 6-7 -3.4*10(-38)~3.4*10(38) double 64 15-16 -1.7*10(-308)~1.7*10(308) long double 128 18-19 -1.2*10(-4932)~1.2*10(4932)简单来说,Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字;double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字(见我的double_float文件) 还有,有个例子:在C和C++中,如下赋值语句float a=0.1;编译器报错:warning C4305: 'initializing' : truncation from 'const double ' to 'float '原因:在C/C++中(也不知道是不是就在VC++中这样),上述语句等号右边0.1,我们以为它是个float,但是编译器却把它认为是个double(因为小数默认是double),所以要报这个warning,一般改成0.1f就没事了。通常的做法,经常使用double,而不喜欢使用float。 参考 BBB33141159的回答
    +1 2011-01-21 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。