ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 请教四舍五入、五舍六入、四舍六入五成双的函数!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-1-15 18:32 | 显示全部楼层 |阅读模式
对于进位的方法,按一定的顺序有:去尾法(这个应当是INT函数吧,但没试过负数时如何处理)、四舍五入(Round)、四舍六入五成双、五舍六入、进一法,这些分别都有Excel函数吗?如果有的话使用可方便了。。。

TA的精华主题

TA的得分主题

发表于 2014-1-15 18:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
没有现成的

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-15 18:46 | 显示全部楼层
jsxjd 发表于 2014-1-15 18:43
没有现成的

要是有公开的Round函数代码就好了,应该很容易改一下的。。。。呵呵,也想用INT加个0.6的先实现个五舍六入啥的,但又发现,不够智能,位数是死的,不能变啊。。。

TA的精华主题

TA的得分主题

发表于 2014-1-15 18:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
0.4吧?
+4/10^N

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-1-15 19:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
四舍六入五成双、五舍六入、都没得,还得自己弄哦,

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-15 21:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
天雨逸鸿 发表于 2014-1-15 19:02
四舍六入五成双、五舍六入、都没得,还得自己弄哦,

那有没有Round函数的代码。。。。。不会是版权保护吧。。

TA的精华主题

TA的得分主题

发表于 2014-1-15 22:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主的头像把我笑到喷了,哈哈。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-16 16:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
看见星光 发表于 2014-1-15 22:17
楼主的头像把我笑到喷了,哈哈。

笑了就好,别喷。。。。。。呵呵

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-2-2 10:37 | 显示全部楼层
  呵呵,闲来头脑清醒,解决了进位的几个问题。现把代码帖出来,大家检查下,还望不吝赐教!
Option Explicit

Public Function qw(num As Double, Optional ws As Integer = 0) '去尾法
qw = Int(num * 10 ^ ws) / 10 ^ ws
End Function

Public Function s4r5(num As Double, Optional ws As Integer = 0) '四舍五入
s4r5 = Int(num * 10 ^ ws + 0.5) / 10 ^ ws
End Function

Public Function s4r6ou5(num As Double, Optional ws As Integer = 0) '四舍六入五成双
Dim wszgw%, blzdw% '尾数最高位,保留最低位
wszgw = Right(Int(num * 10 ^ (ws + 1)), 1)
blzdw = Right(Int(num * 10 ^ (ws)), 1)
If wszgw <= 4 Then
    s4r6ou5 = Int(num * 10 ^ ws) / 10 ^ ws
ElseIf wszgw >= 6 Then
    s4r6ou5 = Int(num * 10 ^ ws + 1) / 10 ^ ws
ElseIf blzdw Mod 2 = 0 Then
    s4r6ou5 = Int(num * 10 ^ ws) / 10 ^ ws
Else
    s4r6ou5 = Int(num * 10 ^ ws + 1) / 10 ^ ws
End If
End Function

Public Function s5r6(num As Double, Optional ws As Integer = 0) '五舍六入
s5r6 = Int(num * 10 ^ ws + 0.4) / 10 ^ ws
End Function

Public Function jy(num As Double, Optional ws As Integer = 0) '进一法
If Int(num * 10 ^ ws) = num * 10 ^ ws Then
    jy = Int(num * 10 ^ ws) / 10 ^ ws
Else
    jy = Int(num * 10 ^ ws + 1) / 10 ^ ws
End If
End Function


TA的精华主题

TA的得分主题

 楼主| 发表于 2014-2-2 10:42 | 显示全部楼层
请教方家,论坛发贴在什么时间段内是可以编辑的?现在才发现原贴是不能编辑了。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-3 16:12 , Processed in 0.040208 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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