ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

保留有效位数并四舍六入2004-11-26新*

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-25 12:13 | 显示全部楼层
现在实际上是log函数出现限制了

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-25 13:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

老大一定是有答案了

修约本来就是一个数据精度的问题,所有的计算机软件在数据精度方面都有一定限制,如果偶想找出方法来,只能是尽量地避免计算过程使用会产生浮点问题的函数了。不知道这种思路对不,让偶再想想![em06]

数值修约规则(GB1987)偶找到了,偶把它在顶楼附件里了。好像和偶们现在做的事有多处偏差呢,可能自定义函数需要好多选项来处理修约中的各种特别情况。

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-25 21:29 | 显示全部楼层

还有一点小问题,请大家帮忙找找原因

99.9999999999999(15位)保留15位有效数据时,用工作表函数算出来的结果和自定义函数不一致,但两者的计算方法是一致的。

偶查出:工作表函数中int(log(99.9999999999999))=2,而VBA中int(log(99.9999999999999))=1,郁闷阿~~~~~ 偶调整计算精度还是不行。

请大家帮忙!!谢谢!

TA的精华主题

TA的得分主题

发表于 2004-11-25 23:58 | 显示全部楼层
今天又看到有效数字与四舍五入的研究进展,非常感谢apolloh大师的工作,现在还没有来得及验证。先下载学习。但看了上面的帖子chenjun版主所说的“9.9999999999999E+101成1.00E+102 9.9999999999E+101成1.000E+102 按前面我们讨论的要求后面一个是正确的。” 我不太理解,应该是前面一个 是正确的,按后面一个不是成了保留四位有效数字了?请指点!

TA的精华主题

TA的得分主题

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

apolloh大师,用过了,非常棒,您又为Excel增加了一个新的对某一行业来说非常实用的函数!谢谢您!

但有两点意见: 1 还是上面我所说的0.9999保留3位有效数字应该是1.00,chenjun斑竹的意思我还不太明白. 2 一般计算以指数形式表示的多在大于千位以上的数,千位以下的多不用指数表示. 小数部分多不使用指数形式. 否则看起来很别扭. 我对模块是门外汉,您可否上传一个不带指数形式表示的模块来?

apolloh及他的ROUND2函数万岁!

TA的精华主题

TA的得分主题

发表于 2004-11-26 22:41 | 显示全部楼层

怎么还没有理解9.99987修约3位有效数是10.00而不是10.0,用分步骤说明如下: 保留3位有效数,拟舍弃数字为其中9.99987红字部分、留下的是9.99; 再看拟舍弃数字987最左面的一位是9大于5,所以保留数字末位加1,即9.99+0.01=10.00;

[em06][em06][em06][em06][em06][em06][em06][em06][em06]

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-27 08:16 | 显示全部楼层

老大,我理解了呀。但wssf 需要一个不带进位的,所以我多做了个开关,可以选择进位和不进位两种情况,原题是他给的。

TA的精华主题

TA的得分主题

发表于 2004-11-27 20:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

对不起 chenjun 版主: 我对有效数字及数字修约的知识只是一知半解,故可能提出一些低级的问题。有关9.99987保留3位有效数字是10.00的问题,可以看作是特殊个例吧。以常规数字修约后得到0.235为例,我们看到这个数字后第一印象它是一个3位有效数字,它有两种情况,一是可能修约前它就是0.235,另一种是它的0.23部分是确定的,尾数0.005是不确定的,是由0.005后面的数字舍弃而得到的或是0.004后面的数字进位而得到的。所以当看到10.00这个数字时,我们会误解它有四位效数字,按照数字修约规则的理解10.0是确定的,小数点后第二位是不确定的可以是10.000-10.005后面的尾数舍弃而得的。我所从事的工作的国标中只要求计算后保留几位有效数字,而对像0.999 0.9999之类保留两位有效数字应该是1.0 还是1.00 没有具体的说明,也可能国家已有规范我没有看到。以后有机会当向我在用的标准制定者提出这个问题。谢谢版主。

在此再次感谢apolloh大师的工作,您的新的修正我已看过了,不好意思您没看清我在32楼发的帖子的意思,我并没有想修改0.999之类引起的有效位数的意思,因为工作中他出现的概率是非常之低。况且国标中对此是否有具体的解释我还不知道,我的意思是想去掉函数公式中指数表示部分,因工作中碰到需使用指数表示的概率也是非常之低,一旦遇到一次,可以用人工的方法处理。去掉指数部分可以使我使用起来更方便一些。您现在不必针对我的要求去修正您的公式,如果要修正的话,建议您在千位以上使用指数形式,其他则不用指数形式,这样可能被更多从事环保、医药、计量等行业检测人员的习惯(或规范要求)所接受。目前我已应用于我的数据库的数据处理,只是将ABS部分简化了一下(工作中最小检测结果〉0,用不上负数部分)。谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-27 21:08 | 显示全部楼层
谢谢 wssf 提供这么详尽的解释,如果有新的讯息也希望还能及时告知,既然做了这个东东当然希望能更完善更实用些。

TA的精华主题

TA的得分主题

发表于 2004-12-1 16:29 | 显示全部楼层

apolloh大师 在数据库中使用您的公式(即把您的off部分简化了一下只取>=0部分)尚未发现问题,但在十数个Excel中使用一旦输入有错查起来就费劲了.故得隆望蜀,希望您有时间的话,能给我一个去掉指数及负数的自定义函数.让我这个菜鸟在您的代码中重组,总会出错.如嫌我太罗嗦,就算了.毕竟已经有了一个满意的公式可以使用.谢谢!

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 02:34 , Processed in 0.038240 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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