ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 浮点运算误差带来的看不懂

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2002-8-22 13:02 | 显示全部楼层 |阅读模式
A1=(4.1-4.2)+1; 或者 (5.1-5.2)+1、(6.1.-6.2)+1、(7.1.-7.2)+1 B2=0.9 C1=IF(A1=B1,"相等","不等") 结果是“不等”! 怎么回事? 想听听各位的说法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-8-23 01:48 | 显示全部楼层
谢谢楼上的回答。 确实,选中“显示值为准”的选项可以解决这个问题;此外还有一些办法,比如使用 ROUND 函数等等也可以此问题。 但是,我们什么时候需要这样的处理呢?不见得是要我们每次用人工去一一检查是否有错,是否需要去选中“显示值为准”或使用 ROUND 函数吧?这就不是让 Excel 替我们工作,而是变成了我们替它批改作业了! 还有,为什么 (4.1-4.2)+1、(5.1-5.2)+1、(6.1.-6.2)+1、(7.1.-7.2)+1 会==0.899999999999999,而 (1.1-1.2)+1、(2.1-2.2)+1、(3.1.-3.2)+1、(8.1.-8.2)+1、 (9.1-9.2)+1 则 = 0.9 呢? 嘿,Excel,你让我不明白……

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-8-23 16:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
再请看: A1=1.333+1.225-1.333-1.225 Excel 97 和其以后的版本中,结果等于 “0”;而在 Excel 95 和其以前的版本中,结果等于2.22044604925031E-16。 这些“看不懂”还与版本有关。

TA的精华主题

TA的得分主题

发表于 2002-9-4 17:02 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-9-4 17:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本贴第一个例子就是在 Excel 2000 中测试的!

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-9-20 13:30 | 显示全部楼层
美国的 Excel 大师 John Walkenbach (『 Excel 2002 Bible 』,中文版 Excel 2002 宝典之原著的两作者之一)介绍说,“从 Excel'97 开始,加减法结果等于或者非常接近于零,计算引擎对任何由于操作数的二进制转换所引入的误差进行补偿。” 可是现在看来,其补偿的精度范围定得很小,小数点之后的16位数仍然视为“可能是实际运算的结果”! 哪位现在还使用 Lotus 123,在它上面试一试怎么样? 否则,在计算值要求非常高的场合,使用 Excel 是否有点“提心吊胆”?

TA的精华主题

TA的得分主题

发表于 2002-9-22 15:29 | 显示全部楼层
这个问题有点烦人,我是深受其害。

TA的精华主题

TA的得分主题

发表于 2002-9-22 15:42 | 显示全部楼层
以下是引用sunnet在2002-8-23 1:48:18的发言: 谢谢楼上的回答。 确实,选中“显示值为准”的选项可以解决这个问题;此外还有一些办法,比如使用 ROUND 函数等等也可以此问题。 但是,我们什么时候需要这样的处理呢?不见得是要我们每次用人工去一一检查是否有错,是否需要去选中“显示值为准”或使用 ROUND 函数吧?这就不是让 Excel 替我们工作,而是变成了我们替它批改作业了! 还有,为什么 (4.1-4.2)+1、(5.1-5.2)+1、(6.1.-6.2)+1、(7.1.-7.2)+1 会==0.899999999999999,而 (1.1-1.2)+1、(2.1-2.2)+1、(3.1.-3.2)+1、(8.1.-8.2)+1、 (9.1-9.2)+1 则 = 0.9 呢? 嘿,Excel,你让我不明白……
我用xp版本,没有这个问题。以前用97时碰到这个问题,后来公式里用了round()才解决问题。

TA的精华主题

TA的得分主题

发表于 2002-9-22 17:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个问题我也早就提过,看前面的贴吧,谁都不知有何规矩

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-9-23 11:43 | 显示全部楼层
To no-sir 你的 Office XP 是什么版本的?有没有加装过什么补丁? 为什么我在 Office XP 中测试情况如故?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 13:52 , Processed in 0.034820 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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