浮点数计算中的精度丢失

浮点数在内存中的存储格式导致了精度丢失。由于指数位和尾数位的限制,二进制无法精确表示某些十进制数,如0.1,这在浮点数运算时产生“减不尽”的现象。科学计数法虽然方便大数表示,但也会导致小数部分的精度损失。因此,浮点数不适用于需要精确计算的场景。

浮点数运算为什么会丢失精度

在内存中存储的浮点数方法格式分别是

float      符号位(1bit)   指数(8 bit)     尾数(23 bit)
double   符号位(1bit)  指数(11 bit)   尾数(52 bit)

其中指数也有正负之分,有一个bit位是符号位。

于是,float的指数范围为-128   +127(     -2^7= -128   ——  2^7 -1=127) ;

而double的指数范围为-1024  +1023(     -2^10= -1024  ——  2^10 -1=1023)

其中负指数决定了浮点数所能表达的绝对值最小的数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。

float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;
double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308

 2的0——10次方对应的十进制数分别是
1     2      4      8      16     32    64(2^6)  128    256      512     1024(2^10)

浮点数实际就是用科学计数法记录数据的。


失真的科学计数法

科学计数法是一种简化计数的方法,用来

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值