c语言浮点数存储问题:c语言浮点数在内存中的存储形态是什么样的?3个字节存储有效数字的范围为什么是6到7?

如题所述

C语言的浮点数遵循 IEEE 754 标准,请查阅相应资料即可。
浮点数的含义就是小数点不是固定的,其精度也不是固定的,举例来说,C语言中的float类型占用4个字节长,这4个字节分为如下3部分:
1位符号位 8位阶码 23位尾数部分
这23位尾数才真正存储了二进制的有效位,将这23位二进制转换为十进制也就6到7位有效数字。追问

应该是7位有效数字才是啊 怎么是6到7位呢?

追答

因为二进制只能表示一部分十进制小数,对于它能表示的数,它当然很精确,比如对于1/2^20这个小数,二进制float就能精确表示,有效数字可以达到20位。而对于它不能表示的十进制小数,精度是不确定的,我说6到7位只是保守说法,大多数情况下float都可以达到这个精度。如果总是依赖float可以表示更大的精度,那么程序可能在某些情况下得到不精确甚至不准确的结果。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网