float-计算机基础

2019-04-06  本文已影响0人  大鱼鱼
#include<stdio.h>
main()
{
    float a;
    double b;
    a=123456.789e4;
    b=123456.789e4;
printf("%f\n%f\n",a,b);
}

运行结果

[leo@localhost ~]$ cd lyj
[leo@localhost lyj]$ gcc float.c
[leo@localhost lyj]$ ./a.out
1234567936.000000
1234567890.000000
[leo@localhost lyj]$ 

float类型可以精确表示7个十进制有效数位,后面的数位是舍入后的结果,舍入结果可能会更大也可能会更小;所以1234567前七位是精确表示的,后面的位数可能舍,可能入。
double类型可以精确到17个十进制有效数位,对于b来说,可以全部输出。

从浮点数二进制表示格式可以知道,尾数部分表示的是23位有效数位,因为23位尾数表示的是小数点右边的数,小数点左边有一位默认为1的位,所以一共有24位有效数位,2^{24}-1=16777215,转化为十进制10^7<16777215<10^8,所以float类型只能精确到7位。

上一篇下一篇

猜你喜欢

热点阅读