新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

《新大榭》- 创大榭地方网络社区先锋品牌 新大榭始终专注于地方网络社区平台的建设 关于我们- [大记事]- 留言建议- [新手报道]

发布 .新大榭软件管家(Excel版) V6.0版 财务/仓库/生产/销售/采购/行政/人事/校园 .公告 - 客户 - 打赏 - 职场 - Excel - Python.

新大榭镜像-音乐-法律-图书-高中课堂-实验 广告是为了能更好的发展 [欢迎商家支持本站互利共赢] 广告位招租.首页黄金广告位等您来!联系 13566035181

查看: 1147|回复: 2

[Excel课程] 四舍五入运算

[复制链接]
发表于 2020-4-6 10:05:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!

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

x
在实际工作中经常需要对数值或计算结果进行四舍五入运算,此时可以使用VBA内置的Round函数。Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果,语法如下:
Round(expression[,numdecimalplaces])
参数expression是必需的,要进行四舍五入运算的数值表达式。
参数numdecimalplaces是可选的,数字值,表示进行四舍五入运算时,小数点右边应保留的位数。如果忽略,则Round函数返回整数。
但是VBA内置的Round函数在对数值进行四舍五入运算时实行的是Bankre舍入,而不是算术舍入。按Bankre舍入规则,如果保留位数的下一个数字正好是5则其后没有其他有效数字,则按保留位最后一位“偶舍奇入”的方法进行处理。比如Round(1.5)的保留位最后为1,是奇数,小数位的5入上去,因此Round(1.5)的运算结果是2;而Round(4.5)的保留位最后为4,是偶数,小数位的5舍去,因此Round(4.5) 的运算结果是4而不是5。
Bankre舍入规则虽然有其合理性,但不符合实际工作的需要。在实际应用中使用以下两种方法避免Bankre舍入:- ?! t% Q" n% M% V
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
Q群推荐 大榭本地求职招聘QQ群,欢迎转发分享本地招聘信息资讯! 官方招聘1群(已满);官方招聘2群:315816937 *
 楼主| 发表于 2020-4-6 10:06:46 | 显示全部楼层
1-1        极小值修正法
在使用Round函数时对需要舍入的数值先加上极小值再调用VBA内置的Round函数,如下面的代码所示。
  1. Sub aTestRound()% \. u: v, b; B' c& K/ m9 L8 J0 U0 d1 D
  2.      MsgBox "Round(4.5)=" &Round(4.5) & Chr(13) & "Round(4.5)=" & Round(4.5 +0.0000001)- ^7 i, F7 {" e& [
  3. End Sub
复制代码

1 U1 K$ O% @+ j( o; ^  C: J6 |
代码解析:
aTestRound过程 分别调用VBA内置的Round函数和加上极小值再调用VBA内置的Round函数在洗染店框中显示两者运算结果,如图157-1所示。
, }3 M9 @  U  m7 q0 ]* [5 E  |
1.jpg - r2 d: B( X1 O  M; }% y. ?4 {
% p% Q: ?! \: w: j6 c; B
从运算结果中可以发现,加上极小值后Round(4.5)已正确运算为5而不是4。
: f2 }! J& Q, o" F0 w! L
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
 楼主| 发表于 2020-4-6 10:11:23 | 显示全部楼层
157-2        调用工作表函数法
1 D, O5 B5 A7 Y4 i
) M2 D* s5 q& D5 i1 s7 b还可以使用工作表函数Round代替VBA内置的Round函数。工作表函数Round和VBA内置的Round函数的用法相同,但它采用算术舍入而不是Bankre舍入,所以不会有“偶舍奇入”的问题,如下面的代码所示。. _  W# \5 k. ^3 x  w7 L5 W

# Z9 a5 q# j. @8 V
  1. Sub bTestRound()
    ! D$ A* h; K6 b- K% B5 C
  2.     MsgBox "Round(4.5)=" & Round(4.5) & Chr(13) & "Round(4.5)=" & Application.Round(4.5, 0)
    , z/ ~9 u: j9 s) B4 B; q) [: C
  3. End Sub
复制代码

% r7 Y' s) r2 U. d4 H0 d. V代码解析
7 _! G$ o( z+ @3 J- s! vbTestRound过程分别调用VBA内置的Round函数和工作表Round函数在消息框中显示两者运算结果
* F5 r/ u2 k, p+ f# _从运算结果中可以发现,使用工作表Round函数后Round(4.5)已正确运算为5而不是4。
0 ~5 t+ {# u# [. t# h$ J# Z
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
北仑单身女神专属群:181567400 北仑单身男神专属群:140788506  平台大数据筛选,勇敢为爱宣告,拒绝骚扰!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

文字版|小黑屋|新大榭 ( 浙ICP备16018253号-1 )|点击这里给站长发消息|

GMT+8, 2026-4-13 11:09 , Processed in 0.090759 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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