浮点数笔记

本文详细介绍了C++中的浮点数类型float和double的范围、精度,以及浮点数在计算机中的存储方式,包括指数位和尾数位的作用,并讨论了特殊情况下浮点数的表示,如0、无穷和NaN。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浮点数

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值