新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 1128|回复: 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舍入:+ b  B, m4 k. e+ Y: Y9 J/ }
新大榭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()
    2 k  n; z5 C$ E( |# h) o
  2.      MsgBox "Round(4.5)=" &Round(4.5) & Chr(13) & "Round(4.5)=" & Round(4.5 +0.0000001)5 }* W+ T& w+ @  F- y
  3. End Sub
复制代码
1 C9 f$ U! A/ E5 w9 i
代码解析:
aTestRound过程 分别调用VBA内置的Round函数和加上极小值再调用VBA内置的Round函数在洗染店框中显示两者运算结果,如图157-1所示。
4 m" {* z7 D! s8 D9 `# L/ D- p+ {
1.jpg / L( g/ D: B9 L& Q3 _

" P, {5 F+ v5 B6 `' T
从运算结果中可以发现,加上极小值后Round(4.5)已正确运算为5而不是4。
& V8 z- t; C& f* k* V% J5 A
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
 楼主| 发表于 2020-4-6 10:11:23 | 显示全部楼层
157-2        调用工作表函数法7 |" ^8 O; G8 l1 R$ r

+ q, n% u) w; U7 o" o还可以使用工作表函数Round代替VBA内置的Round函数。工作表函数Round和VBA内置的Round函数的用法相同,但它采用算术舍入而不是Bankre舍入,所以不会有“偶舍奇入”的问题,如下面的代码所示。
: Y6 W: s/ G% w6 s: N* b3 r$ S. k
" \/ d' k) g9 o- C$ x: K
  1. Sub bTestRound()9 |; `* D8 m! }) _
  2.     MsgBox "Round(4.5)=" & Round(4.5) & Chr(13) & "Round(4.5)=" & Application.Round(4.5, 0); D  B1 f) \% y2 F& w
  3. End Sub
复制代码

7 Z5 R& J* t7 @# [; r代码解析
1 `: f$ K: Q2 K7 m! PbTestRound过程分别调用VBA内置的Round函数和工作表Round函数在消息框中显示两者运算结果% y1 d& |  a. \3 B; m
从运算结果中可以发现,使用工作表Round函数后Round(4.5)已正确运算为5而不是4。
& [, R$ B. ^6 R5 T( |7 f
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
北仑单身女神专属群:181567400 北仑单身男神专属群:140788506  平台大数据筛选,勇敢为爱宣告,拒绝骚扰!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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