大白话说float型的精度和范围
考研复习C++看到书上写float的范围为-3.4×1038 ~ 3.4×1038,有效数字为7位,不太明白,看了几篇大佬的博客后略知一二。
自己尝试把一些晦涩的词汇用浅显的话再解释一遍,总结的可能不是很专业全面,希望对同样入门的小伙伴有所帮助。
关于float的结构
float型数据共占4个字节即32位
其中1位符号位,8位指数部分,23位尾数部分
在内存中按逆字节存储(即顺序与上图相反)
float表示数据的原理
先看科学计数法
对于十进制数10.25 科学计数法为1.025×101
换算为二进制为1010.01 科学计数法为1.01001×23
可以看出任意一个实型数可用二进制科学计数法表示为a×2b
其有效数字的范围a∈[1,2),即1.xxxx的形式,
整数部分1我们不管,把小数点后边的部分xxxx存储起来就是尾数部分m(23位)
而指数部分2b 的幂b就存储为指数部分e (8位)
这样数据的表示方法就是(1+m)×2e