您的位置:首页 > 编程语言 > C语言/C++

C++中实数(以float为例)的存储方式

2015-11-10 18:18 316 查看
(1)float 型在内存中存在方式:

a.float型转化成科学计数法的二进制形式:b1.b2b3b4b5.......*2^k,b1定为1,b1.b2b3b4b5...称为尾数,k称为指数

b.float型数一共32位(符号占1位,指数占8位,尾数占23位)

(2)float型数的范围与表示精度:

a.范围:指数占8位,取值范围~128到127,但是在内存中表示为0到255,当指数取127,尾数全为1的时候,取最大值2^127*(1.1111111)=3.4*10^38

当符号位位1时,取到最小值-3.4*10^38。

b.精度:一位十进制数需要4位二进制数表示,b1始终为1,所以共有24位二进制位,可表示6个十进制数。

(3)float的溢出与舍入误差:

a.溢出:指数位数有限,超出指数为能表示的大小,便发生溢出。

b.舍入误差:尾数位有限,有些数字虽很小,但是表示成科学计数法的二进制数时,位数是无穷的(例如:十进制数0.1的二进制表示为 0.000110011001100110011 0011001100110011001100110011001101,位数无穷位),这时就会发生舍入误差。

疑问:既然十进制数0.1在内存中的表示有舍入误差,为什么在编程时初始化一个float变量为 0.1,然后输出此变量的值还是0.1???
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: