新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 1130|回复: 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舍入:* r* v' |  {0 }! G: d0 ?
新大榭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()
    6 W7 A$ w$ P6 r5 D" s
  2.      MsgBox "Round(4.5)=" &Round(4.5) & Chr(13) & "Round(4.5)=" & Round(4.5 +0.0000001)
    1 g# n4 f- V; `% t$ s: o1 r7 K
  3. End Sub
复制代码

6 W* e  f  y' f& \8 R% M
代码解析:
aTestRound过程 分别调用VBA内置的Round函数和加上极小值再调用VBA内置的Round函数在洗染店框中显示两者运算结果,如图157-1所示。
% x9 h/ M4 P1 P' {7 \; B& |
1.jpg
1 A4 S0 o( Z# P- r) T: I$ m- j0 g+ @( N: Y
从运算结果中可以发现,加上极小值后Round(4.5)已正确运算为5而不是4。
+ l9 Q1 @: K7 t; x3 \" l  z
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
 楼主| 发表于 2020-4-6 10:11:23 | 显示全部楼层
157-2        调用工作表函数法
! W7 W$ m- V% d# N* s. r+ K& l- W+ a
还可以使用工作表函数Round代替VBA内置的Round函数。工作表函数Round和VBA内置的Round函数的用法相同,但它采用算术舍入而不是Bankre舍入,所以不会有“偶舍奇入”的问题,如下面的代码所示。0 L: H- _$ M* {# j6 g* {/ F

4 u6 Z1 b" {- A- D
  1. Sub bTestRound(); J& e$ K/ A$ ?- K" I! X5 R7 Q% ^  m
  2.     MsgBox "Round(4.5)=" & Round(4.5) & Chr(13) & "Round(4.5)=" & Application.Round(4.5, 0), ~7 L( y2 `+ @$ T8 A% ~
  3. End Sub
复制代码
. m& M8 P' s5 T, l4 I
代码解析4 \1 }4 _% V# A, [; ~; h# ^, R
bTestRound过程分别调用VBA内置的Round函数和工作表Round函数在消息框中显示两者运算结果
$ X1 ?% ]. Y( l! o$ Y6 j  W从运算结果中可以发现,使用工作表Round函数后Round(4.5)已正确运算为5而不是4。8 Q: h, M+ s# u
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
北仑单身女神专属群:181567400 北仑单身男神专属群:140788506  平台大数据筛选,勇敢为爱宣告,拒绝骚扰!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-26 21:31 , Processed in 0.080605 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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