《算法技术手册》一3.4.2 舍入误差

简介: 本节书摘来华章计算机《算法技术手册》一书中的第3章 ,第3.4.2节, George T.Heineman Gary Pollice Stanley Selkow 著 杨晨 曹如进 译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4.2 舍入误差

考虑到浮点数的表示形式,任何使用浮点数的运算都有可能存在舍入误差。因为最初设计浮点数的时候,我们使用了一个有限的数来近似地表示一个实数,而这个实数的范围可以大到无限大。表3-2展示了浮点数的表示方式(以3.88f为例)。
表3-2:浮点数表示
2017_09_20_110752
3.88f后面接下来三个连续的32位浮点表示是:
2017_09_20_110836
随机选择三个32位的单精度浮点数,表示为:
2017_09_20_110906
在32位浮点数中,1位用于表示符号,8位用于表示指数,23位用于表示尾数(也就是有效数)。在Java 的浮点表示中,“将指数部分作为一个正数,然后从这个正数中减去一个基准值,得到2的幂。对于一个浮点数来说,这个基准值是126”(Venners,1996)。如果指数部分是128,那么实际的指数值是128-126,即为2。
为了得到最高的精确度,尾数必须是标准化的,因此最左边的数字永远是1。虽然并不需要每次都物理上存储这一位,但是浮点数处理器必须要遵守这条标准:那就是左边永远应该是1,并且在需要的时候补上这一位。在之前的例子中,尾数是.[1]11110000101000111101100 = [1/2] + 1/4 + 1/8 + 1/16 + 1/32 + 1/1024 + 1/4096 + 1/65 536 + 1/131 072 + 1/262 144 + 1/524 288 + 1/2 097 152 + 1/4 194 304 ,四舍五入之后,这个和是0.9700000286102294921875。
因此,当使用这种表示方法存储3.88f时,近似值是 + 12017_09_20_1110040.9700000286102294921875*22,也就是3.88000011444091796875。固有误差为~0.0000001。描述浮点误差最常用的方法是使用相对误差——相对误差计算的是绝对误差和期望值的一个比率。在这里,相对误差是0.0000001144091796875/3.88,或者写作2.9E-8。低于10-6的相对误差是相当普遍的。

相关文章
|
11天前
|
SQL 存储 算法
【MySQL技术内幕】6.4-锁的算法
【MySQL技术内幕】6.4-锁的算法
23 1
|
11天前
|
存储 算法 关系型数据库
【MySQL技术内幕】5.7- InnoDB存储引擎中的哈希算法
【MySQL技术内幕】5.7- InnoDB存储引擎中的哈希算法
14 1
|
13天前
|
算法 C语言 Ruby
分形逃逸时间算法中的 Normalized Iteration Count(NIC)技术 让颜色更柔和
Normalized Iteration Count (NIC) 技术是一种提升逃逸时间算法中分形图像质量的方法,它产生更平滑的颜色过渡。数学公式表示为:`mu = n + 1 - log(log(|Z(n)|)) / log(p)`,其中 `Z(n)` 是迭代次数,`|Z(n)|` 是复数模长,`p` 通常取2。示例代码提供了 Ruby, Maxima 和 C 语言的实现。
|
15天前
|
存储 自然语言处理 算法
编辑距离算法全解析:优化文本处理的关键技术
编辑距离算法全解析:优化文本处理的关键技术
|
20天前
|
算法 NoSQL Python
开山之作!Python数据与算法分析手册,登顶GitHub!
若把编写代码比作行军打仗,那么要想称霸沙场,不能仅靠手中的利刃,还需深谙兵法。 Python是一把利刃,数据结构与算法则是兵法。只有熟读兵法,才能使利刃所向披靡。只有洞彻数据结构与算法,才能真正精通Python。
|
20天前
|
存储 人工智能 算法
RAG技术的高级应用和算法
文章主要探讨了RAG技术的高级应用和算法,系统化地整理了各种方法。
|
20天前
|
机器学习/深度学习 数据采集 算法
基于机器学习的推荐算法构建技术详解
【6月更文挑战第4天】本文详述了构建基于机器学习的推荐算法,特别是协同过滤方法。从用户和物品相似性的角度,解释了用户-用户和物品-物品协同过滤的工作原理。涵盖了数据准备、预处理、特征工程、模型训练、评估优化及结果展示的构建流程。推荐算法在电商、视频和音乐平台广泛应用,未来将受益于大数据和AI技术的进步,提供更智能的推荐服务。
|
26天前
|
算法 NoSQL Python
开山之作!Python数据与算法分析手册,登顶GitHub!
若把编写代码比作行军打仗,那么要想称霸沙场,不能仅靠手中的利刃,还需深谙兵法。 Python是一把利刃,数据结构与算法则是兵法。只有熟读兵法,才能使利刃所向披靡。只有洞彻数据结构与算法,才能真正精通Python
|
18天前
|
存储 运维 算法
社交软件红包技术解密(十三):微信团队首次揭秘微信红包算法,为何你抢到的是0.01元
本文中,我们将介绍几种主流的IM红包分配算法,相信聪明的你一定能从中窥见微信红包技术实现的一些奥秘。
15 0
|
1月前
|
存储 算法 搜索推荐
【大数据分析与挖掘技术】Mahout推荐算法
【大数据分析与挖掘技术】Mahout推荐算法
25 0

热门文章

最新文章