浮点数笔记

浮点数

C++中共有3种浮点类型:float、double和long double。其中float一般为32位,double为64位,long double 为64位以上。

float和double的范围和精度

范围
float和double的具体区别为
float:
1bit(符号位) 8bits(指数位) 23bits(尾数位)
double:
1bit(符号位) 11bits(指数位) 52bits(尾数位)
其中指数位决定了他们的指数范围,也就是说:
float的指数是-127~128,即可以表示的数字大小范围是2-127 到2128
同理double为2-1023 到21024
在有符号的前提下,float可以表示-2128 到2128 的数据。
我们可以把任何二进制浮点数都化成如下标准形式:
(+/-)1.f * 2e
在这里插入图片描述
精度
结论:
float可以保证十进制科学计数法小数点后6位有效精度和第7位的部分精度
double可以保证十进制科学计数法小数点后15位有效精度和第16位的部分精度
浮点数的精度是由尾数来决定的。实际上一个浮点数的数值=(符号)尾数2指数
那么具体的精度就要看尾数能表示多少:
float的尾数为23位,也就是能表示223 =8388608。也就是最大能表示8.388608
2128
并且精度最大为8位(只能保证7位最精确)。
double的尾数是52位,2^52 = 4503599627370496,一共16位,精度保证15位精确。

浮点数在计算机中的存储

以float为例:
在这里插入图片描述
根据二进制转为10进制: (+/-)1.f * 2e
但是此e非彼e----公式中的e要计算偏移。由于指数是从2-127~2128,所以实际上的e应该是存储的偏移量e-127。
修改后为(-1)^s *

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值