上节课简单介绍了浮点数。计算机程序中的浮点数分为单精度浮点数和双精度浮点数。
单精度和双精度精确的范围不一样。
计算机里的最基本的存储单位用位(比特)来表示.bit只能用来存储0或1。
稍大一点的单位是字节(字节,简写为B)。
再大一级的是千字节(千字节),用k来表示。
再大一级的单位是兆字节(兆字节),用M来表示。一张照片的大小通常为1 ~ 3 M。
再大一级的单位为g .一部高清电影的大小通常为1 ~ 2 g。
再大一级的单位为t .
换算关系为:
1 b=8位
1 k=1024 B=2 ^ 10 B
1米=1024 k=2 ^ 20 B
1 g=1024=2 ^ 30 B
1 t=1024 g=2 ^ 40 B
单精度(漂浮)在计算机中存储占字用4节,32位,有效位数为7位(6位小数+小数点)。
双精度(double)在计算机中存储占用8字节,64位,有效位数为16位(15位小数+小数点)。
不管是浮动还是翻倍,在计算机中的存储都遵循IEEE规范,使用二进制科学计数法,都包含三个部分:符号位,指数位和尾数部分。其中浮动的符号位,指数位(即整数部分),尾数部分分别为1,8日23。双精度则分别为1,11日,52岁。
浮动
双
精度主要取决于尾数部分的位数,浮点数为23位,最小为-23次的方,约等乘于1.19以10的7次方,所以浮动小数部分只能精确到后6位面,加上小数点算做一位,即有效数字为7位。
类似、双尾数部分52位,最小为-52次的方,约为2.22乘以10的-16次方,所以精确到小数点后15位,有效位数为16位。
程序验证:
# include & lt; stdio.h> int main () { 浮动=1.123456789; printf ("=% 20.9 f \ n ", 1); 双b=2.123456789; printf (" b=% 20.9 f \ n”, b); 返回0; } >之前注意:这里% 20.9 f表示浮点数总共有20位,其中小数占9位。不足20位的部分,左侧用空格来填充。
运行结果:
一个=1.123456836 b=2.123456789 >之前从运行结果可以看的出,单精度浮点数小数部分只有前6位是准确的,后三位是不准确的。双精度小数部分9位都是准确的。
C语言菜鸟基础教程之单精度浮点数与双精度浮点数