蒲公英 - 制药技术的传播者 GMP理论的实践者

搜索
查看: 9846|回复: 47
收起左侧

[吐槽及其它] 【原创】四舍六入五留双的疑问与excel中的实现

  [复制链接]
药徒
发表于 2016-7-17 12:02:01 | 显示全部楼层 |阅读模式

欢迎您注册蒲公英

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 亡灵J. 于 2016-7-17 12:04 编辑

首先 四舍六入五留双 这个规则大家都知道  但是在excel中除了特殊说明以外 一般只保留15位有效数字 之后就用 0补充 如下图 1.jpg

我们计算的过程中一般也不回用到这么多 那么 遇到有效位数后1位 为5的情况 并且5之后没有了的情况就更少了  
再者 这个规则主要是对于手工计算 或者分步计算时 四舍五入对误差的积累 使得最终结果偏大  
对于excel来说 每个计算过程都是保留15位有效数字 用四舍五入 最终偏大的情况应该可忽略不计   
大家讨论下这个问题  在计算机计算时 是否可以直接用四舍五入代替原本的四舍六入五留双

虽然我个人认为在excel中这条规则没什么卵用  但是 可能还是会有用 所以写了一下代码  
用法:
首先要启用宏 这个可以自行百度
复制代码 打开excel  摁下ALT+F11 打开vba编辑器  插入 模块 然后粘贴   关闭vba编辑器
在excel中 任何一个单元格输入 =sslr(x,y) 其中x可以为数字也可以是单元格 比如A1 y位小数点后的有效位数  比如要A1单元格中有 0.1258这个数字  要保留2位小数  则在选定单元格输入=sslr(0.1258,2)或=sslr(A1,2) 即可
代码如下
Private Function sslr(X As Double, mm As Integer) As Double
If Int(X * 10 ^ (mm + 1)) Mod 10 < 5 Then
sslr = Int(X * 10 ^ mm) / 10 ^ mm '有效位数后一位小于5的情况
ElseIf Int(X * 10 ^ (mm + 1)) Mod 10 = 5 Then '有效位数后一位等于5的情况
  If Int(X * 10 ^ mm) Mod 2 = 0 And Int(X * 10 ^ 16) / (X * 10 ^ mm) = 30 / mm Then  '有效位数后一位等于5并且5后面至小数点后16位均为0的情况
  sslr = Int(X * 10 ^ mm) / 10 ^ mm
  Else: sslr = Int(X * 10 ^ mm + 1) / 10 ^ mm  '有效位数后一位等于5并且5后面至小数点后16位有一位不为0的情况
  End If
'有效位数后一位大于5的情况
ElseIf Int(X * 10 ^ (mm + 1)) Mod 10 > 5 Then
sslr = Int(X * 10 ^ mm + 1) / 10 ^ mm
End If
End Function



也可以直接下载表格使用 两个都可以 1个是2003 一个是2010 关键还是要启用宏
新建 Microsoft Excel 工作表.xlsm (11.7 KB, 下载次数: 32)

本帖被以下淘专辑推荐:

回复

使用道具 举报

药徒
发表于 2016-7-18 12:15:27 | 显示全部楼层
其实函数内的代码简化成一行就可以搞定:
Private Function sslr(X As Double, mm As Integer) As Double
SSLR = CLng(CStr(x * 10 ^ mm)) / (10 ^ mm)
End Function

点评

我试了下这个代码 确实可以呢 能不能稍微解释一下 Clng 是转化为 long Cstr 是转换为字符串 为什么这样一写就可以实现了  详情 回复 发表于 2016-7-18 15:23
回复

使用道具 举报

药士
发表于 2016-7-17 12:41:10 | 显示全部楼层
谢谢分享,IT高手

点评

讨论一下 计算机中是否还有必要四舍六入五留双  详情 回复 发表于 2016-7-17 15:56
回复

使用道具 举报

药徒
发表于 2016-7-17 13:58:50 | 显示全部楼层
厉害,谢谢分享。

点评

讨论一下 计算机中是否还有必要四舍六入五留双  详情 回复 发表于 2016-7-17 15:56
回复

使用道具 举报

药徒
发表于 2016-7-17 14:26:51 | 显示全部楼层
谢谢高手指教!

点评

讨论一下 计算机中是否还有必要四舍六入五留双  详情 回复 发表于 2016-7-17 15:56
回复

使用道具 举报

药生
发表于 2016-7-17 14:38:48 | 显示全部楼层
计算机几级水平啊?挺牛的。

点评

呵呵 没有等级 纯属感兴趣而已 讨论一下 计算机中是否还有必要四舍六入五留双  详情 回复 发表于 2016-7-17 15:57
回复

使用道具 举报

药徒
发表于 2016-7-17 15:12:03 | 显示全部楼层
谢谢分享。

点评

讨论一下 计算机中是否还有必要四舍六入五留双  详情 回复 发表于 2016-7-17 15:57
回复

使用道具 举报

药徒
发表于 2016-7-17 15:25:24 | 显示全部楼层
谢谢高手指点迷津

点评

讨论一下 计算机中是否还有必要四舍六入五留双  详情 回复 发表于 2016-7-17 15:57
回复

使用道具 举报

药徒
 楼主| 发表于 2016-7-17 15:56:23 | 显示全部楼层
意林枫 发表于 2016-7-17 12:41
谢谢分享,IT高手

讨论一下  计算机中是否还有必要四舍六入五留双
回复

使用道具 举报

药徒
 楼主| 发表于 2016-7-17 15:56:27 | 显示全部楼层

讨论一下  计算机中是否还有必要四舍六入五留双
回复

使用道具 举报

药徒
 楼主| 发表于 2016-7-17 15:56:30 | 显示全部楼层

讨论一下  计算机中是否还有必要四舍六入五留双
回复

使用道具 举报

药徒
 楼主| 发表于 2016-7-17 15:57:22 | 显示全部楼层
刀劈大脑 发表于 2016-7-17 14:38
计算机几级水平啊?挺牛的。

呵呵  没有等级  纯属感兴趣而已  

讨论一下  计算机中是否还有必要四舍六入五留双
回复

使用道具 举报

药徒
 楼主| 发表于 2016-7-17 15:57:27 | 显示全部楼层

讨论一下  计算机中是否还有必要四舍六入五留双
回复

使用道具 举报

药徒
 楼主| 发表于 2016-7-17 15:57:32 | 显示全部楼层

讨论一下  计算机中是否还有必要四舍六入五留双
回复

使用道具 举报

药徒
发表于 2016-7-17 16:43:04 | 显示全部楼层
既然是使用计算机计算,我觉得没必要四舍六入五留双,只有当你把结果搬到纸质记录的时候需要,

点评

赞同,过程不需要取舍  详情 回复 发表于 2016-7-17 17:49
回复

使用道具 举报

药徒
发表于 2016-7-17 16:50:11 | 显示全部楼层
不过还有个疑问,就是当你的记录有很多个等号,每个等号的结果都进行修约了,这样修约后的数据再进行计算得到的最终结果,与使用计算机一步计算到位得到的数据是有一点误差的。这个误差是否可以接受?一步到位算出来的结果是否被认可?

点评

就因为很多等号 不停的修约 才会有误差 所以才会有四舍六入 这条规则 就是为了减少误差 但是在计算机计算中 感觉就没必要了 结果更精确了  详情 回复 发表于 2016-7-18 10:06
回复

使用道具 举报

发表于 2016-7-17 17:09:45 | 显示全部楼层

谢谢分享,IT高手
回复

使用道具 举报

药士
发表于 2016-7-17 17:49:57 | 显示全部楼层
伊娃瓦力 发表于 2016-7-17 16:43
既然是使用计算机计算,我觉得没必要四舍六入五留双,只有当你把结果搬到纸质记录的时候需要,

赞同,过程不需要取舍
回复

使用道具 举报

药徒
发表于 2016-7-17 19:45:56 | 显示全部楼层
回复

使用道具 举报

药徒
发表于 2016-7-18 08:46:07 | 显示全部楼层
亡灵J. 发表于 2016-7-17 15:56
讨论一下  计算机中是否还有必要四舍六入五留双

有必要的目的是什么,是为了减小误差吗,结果更准确吗,呵呵。

点评

电脑也可以做到 比如你最终保留两位小数 那么每步的计算都保留三位 最终修约到2位 这样和手算就一样了 也可以直接计算 最终结果肯定和分步计算有点误差 但是这个计算的结果更精确 因为每一步都保留了很多  详情 回复 发表于 2016-7-18 10:10
回复

使用道具 举报

发表于 2016-7-18 08:57:25 | 显示全部楼层
我认为中间过程不必取舍,最终统计结果考虑取舍规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

×发帖声明
1、本站为技术交流论坛,发帖的内容具有互动属性。您在本站发布的内容:
①在无人回复的情况下,可以通过自助删帖功能随时删除(自助删帖功能关闭期间,可以联系管理员微信:8542508 处理。)
②在有人回复和讨论的情况下,主题帖和回复内容已构成一个不可分割的整体,您将不能直接删除该帖。
2、禁止发布任何涉政、涉黄赌毒及其他违反国家相关法律、法规、及本站版规的内容,详情请参阅《蒲公英论坛总版规》。
3、您在本站发表、转载的任何作品仅代表您个人观点,不代表本站观点。不要盗用有版权要求的作品,转贴请注明来源,否则文责自负。
4、请认真阅读上述条款,您发帖即代表接受上述条款。

QQ|手机版|蒲公英|ouryao|蒲公英 ( 京ICP备14042168号-1 )  增值电信业务经营许可证编号:京B2-20243455  互联网药品信息服务资格证书编号:(京)-非经营性-2024-0033

GMT+8, 2024-11-24 07:45

Powered by Discuz! X3.4运维单位:苏州豚鼠科技有限公司

Copyright © 2001-2020, Tencent Cloud.

声明:蒲公英网站所涉及的原创文章、文字内容、视频图片及首发资料,版权归作者及蒲公英网站所有,转载要在显著位置标明来源“蒲公英”;禁止任何形式的商业用途。违反上述声明的,本站及作者将追究法律责任。
快速回复 返回顶部 返回列表