ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: 胡剑0227

[讨论] MATCH函数内部的高精度带来的问题即应对策略

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-2-12 14:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wcymiss 于 2012-2-12 14:47 编辑

胡版又有新的研究成果即将问世了。呵呵

我感觉“=”比较的精度还只是在15位以内。用工程函数DELTA可以比较出B6与“232”是不同的。
可能match的精度要高于“=”,不单是match,还发现lookup家族都有这个现象,还有frequency也是。

B6输入:=2-10^-15,此时B6显示为“2”;
测试:=2=B6,返回true;
测试:=match(B6,{1,2,3}),返回1;
测试:=DELTA(B6,2),返回0,即两者不等。

期待胡版最终的研究结果。


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-12 15:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wcymiss 发表于 2012-2-12 14:31
胡版又有新的研究成果即将问世了。呵呵

我感觉“=”比较的精度还只是在15位以内。用工程函数DELTA可以比 ...

恩,当时的结论就是函数内部的精度是要高于15位的,就是这个,呵呵。

赞一下,呵呵。你的直接用DELTA函数来判断很清晰,给力。给朵献花,呵呵

TA的精华主题

TA的得分主题

发表于 2012-2-12 16:56 | 显示全部楼层
胡剑0227 发表于 2012-2-12 15:13
恩,当时的结论就是函数内部的精度是要高于15位的,就是这个,呵呵。

赞一下,呵呵。你的直接用DELTA函 ...

我用00:00与00:01至23:59对比,结果仍像吴姐和胡版的看法一致,
但也出现奇怪的现象,用B列的时间与对应的ROW()/14440进行对比,却不是都相等,相等的仅826,有600+都是不相等的。
Book1.rar (134.56 KB, 下载次数: 7)

点评

呵呵,原始是有限精度的计算产生的误差(主要是除法,MOD等)MATCH的精度的相互作用,如果导致误差的数值多,那么最后自然更加的离谱。所以在匹配函数中要降低他们的执行精度,以规避误差...  发表于 2012-2-12 20:54

TA的精华主题

TA的得分主题

发表于 2012-2-12 21:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
胡版辛苦了,一个一个点评
EXCEL中离232最近的有两个数 但直接等于232或我们认为的232【MOD("02:27"-"22:35",1)*1440】都会返回FALSE的
232.000000000001
231.999999999999

点评

辛苦?哈哈,做自己喜欢的事情不会辛苦的,快乐中...  发表于 2012-2-14 10:44
恩,是的,= 判断的精度是和15数字相一致的,也能判断细微的差别,但232和那个B6比较就判断不出来了,所以B6和232的差别更加细微,也即说明MATCH等函数内部的精度是要高于15数字的...  发表于 2012-2-13 09:57

TA的精华主题

TA的得分主题

发表于 2012-2-14 11:02 | 显示全部楼层
本帖最后由 CheryBTL 于 2012-2-14 11:03 编辑

同感呀~~~~
做自己喜欢的事儿!
年前看皮德.比菲特(股神的儿子,原来还是以为是股神写的,被骗了)写的做你自己,就是要找自己喜欢的事儿,并坚持下去!
1.JPG

TA的精华主题

TA的得分主题

发表于 2012-3-16 14:21 | 显示全部楼层
原来这里面还有那么多学问啊

TA的精华主题

TA的得分主题

发表于 2012-7-14 15:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

继续潜水学习~~~

TA的精华主题

TA的得分主题

发表于 2013-9-5 15:26 | 显示全部楼层
match精度.jpg
A1=3.76是手工输入的
B1=MATCH(A1-INT(A1),{0.25,0.5,0.76},1) 返回值是2

TA的精华主题

TA的得分主题

发表于 2018-1-31 22:53 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 13:39 , Processed in 0.040341 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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