新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 1129|回复: 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舍入:
! ?4 d: L/ m; K% F- ]
新大榭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()  u4 x8 c# L6 s8 R: r4 Y$ w
  2.      MsgBox "Round(4.5)=" &Round(4.5) & Chr(13) & "Round(4.5)=" & Round(4.5 +0.0000001)# `& I: X! v* K* H: D1 ?* i
  3. End Sub
复制代码

( a7 Z- G# _% a: J: e; q; ^) Y
代码解析:
aTestRound过程 分别调用VBA内置的Round函数和加上极小值再调用VBA内置的Round函数在洗染店框中显示两者运算结果,如图157-1所示。
& l: \- ^5 M! @+ q9 D# E. [
1.jpg
% G6 o: _8 l5 E
- b1 Z' n8 T  {2 G- s5 r- V5 R
从运算结果中可以发现,加上极小值后Round(4.5)已正确运算为5而不是4。

' [! ?6 |8 G. t5 p8 r2 l8 o) n
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
 楼主| 发表于 2020-4-6 10:11:23 | 显示全部楼层
157-2        调用工作表函数法9 Q( O( F" v$ l& j* y6 {; q) P

6 `+ ]3 t# |" v7 q3 L( ?. v还可以使用工作表函数Round代替VBA内置的Round函数。工作表函数Round和VBA内置的Round函数的用法相同,但它采用算术舍入而不是Bankre舍入,所以不会有“偶舍奇入”的问题,如下面的代码所示。
% h1 t) T4 ^8 X+ r" j# o/ H( g$ e( X
  1. Sub bTestRound()  S2 w5 [5 E) \% \: G) N2 A
  2.     MsgBox "Round(4.5)=" & Round(4.5) & Chr(13) & "Round(4.5)=" & Application.Round(4.5, 0)* P2 A) J$ w, n5 Y5 X, E
  3. End Sub
复制代码

. k1 n( s2 I. r" B) D代码解析- S" }( x# L# W; Y
bTestRound过程分别调用VBA内置的Round函数和工作表Round函数在消息框中显示两者运算结果: r. b) p$ Y# c
从运算结果中可以发现,使用工作表Round函数后Round(4.5)已正确运算为5而不是4。
9 n8 D) s. R, Q  e# j. H& h" D' Z
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
北仑单身女神专属群:181567400 北仑单身男神专属群:140788506  平台大数据筛选,勇敢为爱宣告,拒绝骚扰!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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