详解计算机中浮点数存储、运算及其误差问题

1. 概述

计算机中的小数分为定点数浮点数,定点数比较简单,浮点数比较复杂,也是面试中常常被问到的问题,很多资料都讲得很简单,一笔带过,没有深入讲解,在本文中将对浮点数的误差问题做一个比较详细的深入分析。


2. IEEE754标准

计算机中任何事都需要一个标准,处理浮点数存储的标准最通用的标准就是IEEE754标准,该标准规定了4种浮点数类型:单精度双精度延伸单精度延伸双精度,其中最常用的是单精度双精度,如下表所示:

精度 字节数 正数取值范围 负数取值范围
单精度类型 4 1.4e-45 至 3.4e+38 -3.4e+38 至 -1.4e-45
双精度类型 8 4.9e-324 至 1.798e+308 -1.798e+308 至 -4.9e-324

我们以单精度浮点数(4字节,32位)为例来说明其原理,双精度浮点数只是位数更多,原理类似。

浮点数都是以科学计数法的方式存储数字的,它由符号有效数字指数三部分组成,在IEEE中换了个名字,分别为:符号阶码尾数,存储其值得对应就是符号位阶码位尾数位.

单精度浮点数32 位,最高位为符号位,占 1 位;接着为占 8 位的指数位,最后为占 23 位的尾数位,如下图所示:
在这里插入图片描述


3. 浮点数转化为二进制形式

计算机只能存储二进制数据,因此浮点数在存储时先将其转化为二进制的形式。

1)整数部分
整数部分转化比较好转化,除2取余数即可。

2)小数部分
小数部分转化为二进制跟整数部分不一样,小数部分每次乘2:如果大于1,则添加一个1作为二进制位,并将相乘得到的结果中整数部分的1去掉,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值