当前位置:首页 > 旅游指南

浮点 Excel中的浮点误差,你听说过吗?

优秀的家庭

朋友们,你们好。今天,我想和大家分享一点很少有人谈到的Excel知识,但却困扰了很多人。

我们先算一个公式:

4.1-4.2+1=?

估计孩子也会数,4.1-4.2是-0.1,然后加1,是0.9。

太简单了吧?让我们在Excel中输入公式来看看:

好像没什么问题,不用担心。让我们加上小数位,看看结果会是什么。

当我们不断增加小数位数时,计算结果从0.90变为0.89999。

是我们操作有问题,还是Excel混乱了?

其实不是。这种现象就是传说中的浮点错误。

这种现象对我们的工作有什么影响?老朱估计,感受最深的是会计。开发票的时候往往会有一分钱的差价。

接下来,我们慢慢聊。先说什么是浮点错误。

说到浮点错误,还有一个比较高级的计算机概念——浮点数。有兴趣的同学可以问问杜娘。简单来说,在计算机计算中,只能存储和处理二进制数据,即1和0。Excel计算时,首先要把十进制值转换成二进制值,交给计算机处理,最后把二进制结果转换成十进制值,在Excel中显示出来。

将十进制值转换为二进制值的计算过程如下:

1.整数部分:

将整数连续除以2得到余数,再除以2直到商等于0,最后将余数逆序排列。

如果十进制值22被转换成二进制值,计算步骤如下:

22除以2得到11,余数为0。

11除以2得到5,余数为1。

5除以2得到2,余数为1。

除以2得到1,余数为0。

1除以2得到0,余数为1。

最后余数逆序排列,整数22的二进制结果是10110。

2.小数部分:

小数乘以2,取出整数部分,剩下的小数乘以2,再取出乘积的整数部分。如此反复,直到乘积的小数部分为0或达到要求的精度,最后整数部分按顺序排列。

如果将十进制值0.8125转换为二进制值,计算步骤如下:

首先,将0.8125乘以2,使其等于1.625。舍入结果为1,小数部分为0.625。

0.625乘以2等于1.25,取整结果为1,小数部分为0.25。

0.25乘以2等于0.5,取整结果为0,小数部分为0.5。

0.5乘以2等于1.0,取整结果为1,小数部分为0,计算结束。

将产品的舍入结果排序,结果为0.1101。

3.整数和十进制混合值:

当包含小数的十进制数转换为二进制数时,整数和小数部分分别转换,然后将转换结果相加。

说了这些,朋友们就明白了,还有1和0。

然而,这种转换有时会陷入无限循环。例如,根据上述方法,将十进制0.6转换为二进制码,计算结果为:

0.10011001100110011……

0011部分会无限重复,不能用空之间的限定量表示。当结果超过Excel的计算精度,一个数字太小无法表达时,Excel中的处理结果为0。

因此,在不同系统之间进行转换时,很容易出现一些非常小的错误,这就是浮点错误。该死,我终于一针见血了...

我们对浮点错误的原因有一个简单的了解,那么如何弥补这个错误呢?

在实践中,我们经常使用两种方法,最常见的一种是使用ROUND函数强制将数字四舍五入。

例如,添加ROUND函数来限制公式的小数位数:

=ROUND(4.1-4.2+1,1)

这样公式会返回保留一个小数位的0.9的计算结果。

这种舍入属于直接进位,从统计角度来看倾向于大数,导致误差累积。还有一种比较科学的计数保管方法,就是四房六房百分之五十对。

具体来说,有两种情况:保留号码的最后一位小于等于4,大于等于6时进位,等于5后接非零位时进位,等于5后接非零位时进位。

使用这种方法,平均误差趋于零,所以是常用的数字归约规则。

假设单元格A2是要修改的值,公式如下:

=round(a2,2)-(mod(a2*10^3,20)=5)*10^(-2)

另一个简单粗暴的方法是使用“主题显示准确性”选项。使用此选项会强制工作表中每个数字的值都是显示的值。

单击【文件】→【选项】,在【Excel选项】对话框中单击【高级】,选择“设置精度为显示精度”。

需要注意的是,开启此选项会影响到工作簿中的所有工作表,并且此操作丢失的数据无法恢复,所以大家在使用时一定要小心。

当当书香节

1.《浮点 Excel中的浮点误差,你听说过吗?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《浮点 Excel中的浮点误差,你听说过吗?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/887926.html

上一篇

“灵魂出窍”、“地府查档”?揭开"塔罗牌占卜"神秘面纱

下一篇

美军航母杀回马枪进南海 美军想干什么

乡村爱情9剧情介绍 《乡村爱情9》第二部什么时候播出? 《乡村爱情9》第一部分集剧情介绍

乡村爱情9剧情介绍 《乡村爱情9》第二部什么时候播出? 《乡村爱情9》第一部分集剧情介绍

《乡村爱情9》正在播出。在最新的广播故事中,宋晓峰和苏玉红在暗恋。宋晓峰不仅告诉别墅里的人去苏玉红的理发店理发,还帮助苏玉红赶走了吴笛。为了表示感谢,苏玉红送给宋晓峰一条自己织的围巾。戴上后,宋晓峰赞不绝口,并多次感叹它看起来不错。此外,他摘下手镯,递给苏玉红,就好像他给了对方一个令牌。两个人开始面对彼此的感...

乡村爱情2剧情介绍 《乡村爱情9》第二部什么时候播出? 《乡村爱情9》第一部分集剧情介绍

乡村爱情2剧情介绍 《乡村爱情9》第二部什么时候播出? 《乡村爱情9》第一部分集剧情介绍

《乡村爱情9》正在播出。在最新的广播故事中,宋晓峰和苏玉红在暗恋。宋晓峰不仅告诉别墅里的人去苏玉红的理发店理发,还帮助苏玉红赶走了吴笛。为了表示感谢,苏玉红送给宋晓峰一条自己织的围巾。戴上后,宋晓峰赞不绝口,并多次感叹它看起来不错。此外,他摘下手镯,递给苏玉红,就好像他给了对方一个令牌。两个人开始面对彼此的感...

乡村爱情第2部 《乡村爱情9》第二部什么时候播出? 《乡村爱情9》第一部分集剧情介绍

乡村爱情第2部 《乡村爱情9》第二部什么时候播出? 《乡村爱情9》第一部分集剧情介绍

《乡村爱情9》正在播出。在最新的广播故事中,宋晓峰和苏玉红在暗恋。宋晓峰不仅告诉别墅里的人去苏玉红的理发店理发,还帮助苏玉红赶走了吴笛。为了表示感谢,苏玉红送给宋晓峰一条自己织的围巾。戴上后,宋晓峰赞不绝口,并多次感叹它看起来不错。此外,他摘下手镯,递给苏玉红,就好像他给了对方一个令牌。两个人开始面对彼此的感...

乡村爱情2剧情 《乡村爱情9》第二部什么时候播出? 《乡村爱情9》第一部分集剧情介绍

《乡村爱情9》正在播出。在最新的广播故事中,宋晓峰和苏玉红在暗恋。宋晓峰不仅告诉别墅里的人去苏玉红的理发店理发,还帮助苏玉红赶走了吴笛。为了表示感谢,苏玉红送给宋晓峰一条自己织的围巾。戴上后,宋晓峰赞不绝口,并多次感叹它看起来不错。此外,他摘下手镯,递给苏玉红,就好像他给了对方一个令牌。两个人开始面对彼此的感...

青岛核酸检测已采样超750万份 目前检测结果如何

青岛核酸检测已采样超750万份 目前检测结果如何

青岛已经采集了750多万份核酸样本。近日,一则“青岛已采样核酸750多万份”的新闻引发热议。据悉,根据青岛市最新疫情报告,已抽取7502720份样本进行SARS-CoV-2核酸检测,除确诊病例和无症状感染者外,未发现新的阳性样本。据报道,10月14日9时30分,全市共检测出532名密切接触者,均已实施集中隔离...

弗洛伊德尸检报告 具体是什么情况报告结果是

弗洛伊德尸检报告 具体是什么情况报告结果是

据新华社报道,美国明尼苏达州亨内平县法医办公室6月1日发表声明称,非裔美国公民乔治·弗洛伊德(George Floyd)在被警方羁押期间死于凶杀,与“颈部压迫”有关。弗洛伊德的家庭律师表示,独立尸检发现,乔治·弗洛伊德的死亡模式是“颈部和背部受压导致脑部血液循环而窒息致死”。46岁的弗洛伊德是一名保安,在美国...

武汉市集中核酸检测总支出大约9亿元 最终检测结果如何

武汉市集中核酸检测总支出大约9亿元 最终检测结果如何

6月2日,新冠肺炎肺炎疫情防控指挥部召开新闻发布会。在新闻发布会上,武汉市委常委、常务副市长胡亚波表示,经过10多天的努力,武汉成功完成了核酸集中检测任务,费用由政府承担。通过集中采购降低成本,总支出约9亿元。武汉市核酸集中检测总支出约9亿元据报道,5月14日00时至6月1日24时,武汉共检出9899828人...

武汉通报集中核酸检测排查结果 排查多少人结果怎样

武汉通报集中核酸检测排查结果 排查多少人结果怎样

6月2日,湖北省新冠肺炎肺炎疫情防控指挥部举行第104次新闻发布会。会上,湖北省有关领导介绍,武汉通报了核酸集中检测结果。5月14日00时至6月1日24时,武汉市共检出9899828人,未发现确诊病例。检出无症状感染者300人,检出率0.303/ 10000,随访密切接触者1174人。核酸检测结果均为阴性,医...