ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4135|回复: 6

[分享] 看不见的浮点数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-9 16:47 | 显示全部楼层 |阅读模式
在excel里浮点数是新手最常见的问题之一,论坛里已经有很多老师有所解释                                                
但是关于浮点,有一些性质可能是连老手都不太清楚,故开个帖介绍下浮点数的一些性质                                                
                                                
1,浮点产生原因与常见性质                                                
excel使用的是IEEE754(IEEE二进制浮点数算术标准)存储和计算数据                                                
由于电脑计算时十进制与二进制转化与保留精度等等影响,结果可能出现异常                                                
                                                
常见影响:                                                
1)  计算结果出现大量小数或者变成科学计数法下的非0极小数                                                
例,  =4.1-4 结果在excel里为0.0999999999999996                                                
a1.jpg

2)  有些数值无法在excel里直接录入,不然你就试下32768.598                                
(这数字直接录入下会变为32768.5979999999 )                                

看不见的浮点数.rar

27.07 KB, 下载次数: 67

评分

5

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-9 16:48 | 显示全部楼层
本帖最后由 流浪铁匠 于 2019-6-9 17:07 编辑

2,浮点数的处理:                                                
新手容易犯的另一个错误是修改单元格格式的小数位数来处理浮点精度,                                                
但这操作只治标不是本,并没有处理数值精度,                                                
通常建议套嵌round函数解决浮点精度(excel选项里的将精度设置为所显示的精度 这个功能会处理全部数据且无法返回,尽量避免用这功能处理)                                                            
                                                
3,高精度浮点数带来的函数问题                                                
在之前帖子里有介绍,rand函数结果的精度是高于15位的                                                
因此用rand随机产生一个小数并对照手录2次,                                                
再配合其他函数结果对比,大家会发现一个问题                                            部分函数能识别这种高于15位已经无法用调高小数位数发现的精度差异
例如rank,frequency,match,vlookup,mode,lookup等等,都是能识别这种精度差异的

       a2.jpg
看到这里肯定有人会问        
有没有什么函数能直接识别b2和b4为不同数值        
答案是当然有,有个函数 delta 可以识别这种浮点精度  (注意识别超15位精度差异的性质只存在于excel,这函数在wps似乎只识别15位精度)      


a3.jpg


借助这个函数,我们还可以发现
聚合函数与四则运算并不能修整这种浮点精度到15位精度


评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-9 16:57 | 显示全部楼层
本帖最后由 流浪铁匠 于 2019-6-9 16:58 编辑

4,看不见的浮点                                       
在上面这个案例相信很多熟悉函数的人都相对清楚                                       
在看到数值小数位数过高或者涉及时间的问题时都知道需要修正精度处理                                       
但是,excel里有一类更危险的性质,                                       
目前这类算式里找到的最简单的算式为 =0.1+0.2                                       
这个值无论使用F9,公式求值还是单元格格式调高,结果都是0.3                                       
但是,使用公式 =match(0.1+0.2,{0.2,0.3},0)                                       
结果是报错的
a4.jpg
a5.jpg
                                       
原因上述已经解释过了,但是这个浮点数很有意思,并没有产生大量小数位数使我们下意识规避                                       
这点在检查数组公式时F9返回计算结果时尤其重要                                       
在群里有些函数高手都被这个性质坑过

因此,在碰到涉及本文提及的函数,以及在确保公式本身无误的前提下公式结果异常,请考虑本文最后提到的这条性质,谢谢                                       

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-6-9 18:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以前在EH微信公众号里面就看过前辈的文章,当时好像是100条EXCEL常识,感觉说的很不错,后来才知道前辈是EXCEL发烧友,失敬失敬哈哈

TA的精华主题

TA的得分主题

发表于 2019-6-17 13:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
下载学习,楼主辛苦!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-5 12:40 | 显示全部楼层
更正个细节
早上群里聊浮点发现,有些特定小数位数的值,在round的2参特定位数(原小数位数)下也是无法修正的
造成这批数值无法准确在excel里录入和修正精度
使用"将精度设置为显示的精度"也不能修正

QQ截图20190905115706.png

TA的精华主题

TA的得分主题

发表于 2022-11-10 09:53 | 显示全部楼层
有时间看一下,解释的挺全
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-17 17:03 , Processed in 0.031703 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表