新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 1146|回复: 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舍入:
2 B8 d' R7 C" k  a
新大榭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()8 e  T4 ~$ }* a7 \
  2.      MsgBox "Round(4.5)=" &Round(4.5) & Chr(13) & "Round(4.5)=" & Round(4.5 +0.0000001)
    8 A1 A! h, f& P. C0 R) j: E3 M
  3. End Sub
复制代码

  i7 l( }3 m) @& N2 ?, O5 w4 j' I
代码解析:
aTestRound过程 分别调用VBA内置的Round函数和加上极小值再调用VBA内置的Round函数在洗染店框中显示两者运算结果,如图157-1所示。

! \2 D, w) b5 }/ z
1.jpg
# I" A9 ^# V) y- X/ q1 I/ w& T% D2 p1 O2 F; m9 Y- M
从运算结果中可以发现,加上极小值后Round(4.5)已正确运算为5而不是4。

+ B* j9 y0 D" d: B& h2 I% h
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
 楼主| 发表于 2020-4-6 10:11:23 | 显示全部楼层
157-2        调用工作表函数法, G, e# w6 p8 v* c  z
* b. u. v+ V5 E3 l% b
还可以使用工作表函数Round代替VBA内置的Round函数。工作表函数Round和VBA内置的Round函数的用法相同,但它采用算术舍入而不是Bankre舍入,所以不会有“偶舍奇入”的问题,如下面的代码所示。
3 g: t# h( x( ~* y! X. X& z
5 I2 E5 r/ S& v6 ^) n
  1. Sub bTestRound()
    * M) w) r, v1 N/ Z
  2.     MsgBox "Round(4.5)=" & Round(4.5) & Chr(13) & "Round(4.5)=" & Application.Round(4.5, 0)- o& A0 a/ c+ k; `
  3. End Sub
复制代码

5 V! }: h  g: m2 N1 f# _6 i6 @/ t代码解析
( q, F( A$ D$ F8 b, MbTestRound过程分别调用VBA内置的Round函数和工作表Round函数在消息框中显示两者运算结果) M( _5 j9 \# t1 v; s$ D' _1 J
从运算结果中可以发现,使用工作表Round函数后Round(4.5)已正确运算为5而不是4。
# Z. ^! k, N9 g/ g$ ?3 m
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
北仑单身女神专属群:181567400 北仑单身男神专属群:140788506  平台大数据筛选,勇敢为爱宣告,拒绝骚扰!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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