C语言菜鸟基础教程之单精度浮点数与双精度浮点数
上节课 简单介绍了浮点数。计算机程序中的浮点数分为单精度浮点数和双精度浮点数。 单精度和双精度精确的范围不一样。 计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。 换算关系为: 1B = 8bit 单精度(float)在计算机中存储占用4字节,32位,有效位数为7位(6位小数+小数点)。 float double 精度主要取决于尾数部分的位数,float为23位,最小为2的-23次方,约等于1.19乘以10的-7次方,所以float小数部分只能精确到后面6位,加上小数点算做一位,即有效数字为7位。 程序验证: #include <stdio.h> int main() { float a = 1.123456789; printf("a = %20.9fn",a); double b = 2.123456789; printf("b = %20.9fn",b); return 0; } 注意:这里%20.9f表示浮点数总共有20位,其中小数占9位。不足20位的部分,左侧用空格来填充。 运行结果: a = 1.123456836 b = 2.123456789 从运行结果可以看出,单精度浮点数小数部分只有前6位是准确的,后三位是不准确的。双精度小数部分9位都是准确的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |