ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8773|回复: 51

[求助] VBA舍入遇到的一个奇怪问题

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-5-8 14:58 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:自定义函数开发
VBA中的舍入是按4舍6入5成双的规则,但今天遇到一个奇怪的问题,大家看看是不是一样会出现。
用的07版,WIN7 64位机上测试。

round(8.05/2,2)   这个结果得出是4.03,不是想像的4.02,但其它的测试的数都没有问题, 如8.09,4.05等都没有问题。

点评

知识树内容索引:舍入到最近偶数(round to even),38楼、46楼  发表于 2013-9-28 00:28

TA的精华主题

TA的得分主题

发表于 2012-5-8 15:05 | 显示全部楼层
应该没有错是四舍五入啊:8.05/2=4.025,四舍五入是4.03

TA的精华主题

TA的得分主题

发表于 2012-5-8 15:06 | 显示全部楼层
确实有这个毛病。。。。。。

TA的精华主题

TA的得分主题

发表于 2012-5-8 15:17 | 显示全部楼层
本帖最后由 liucqa 于 2012-5-8 15:19 编辑

?round(4.005,2)
4
?round(4.015,2)
4.01
?round(4.025,2)
4.03
?round(4.035,2)
4.04
?round(4.045,2)
4.04
?round(4.055,2)
4.06
?round(4.065,2)
4.07
?round(4.075,2)
4.08
?round(4.085,2)
4.08
?round(4.095,2)
4.1

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-8 15:18 | 显示全部楼层
风云际会6 发表于 2012-5-8 15:05
应该没有错是四舍五入啊:8.05/2=4.025,四舍五入是4.03

你试一下VBA中用msgbox round(6.05/2,2)

TA的精华主题

TA的得分主题

发表于 2012-5-8 15:20 | 显示全部楼层
本帖最后由 baomaboy 于 2012-5-31 20:33 编辑

事实上你用VBA中的Round当4舍6入5成双用会出现很多的错误值,不只是4.03,
Round(1.225, 2)
Round(1.245, 2)
Round(4.025, 2)
Round(4.065, 2)
还有很多,这个很多年了。

http://club.excelhome.net/thread-617843-1-1.html

TA的精华主题

TA的得分主题

发表于 2012-5-8 15:21 | 显示全部楼层
刚才试了一下,如楼主所说的,怪事,我是用2010版的也是这样的

TA的精华主题

TA的得分主题

发表于 2012-5-8 15:22 | 显示全部楼层
?round(1.025,2)
1.02
?round(2.025,2)
2.02
?round(3.025,2)
3.02
?round(4.025,2)
4.03
?round(5.025,2)
5.03

?round(6.025,2)
6.02
?round(7.025,2)
7.02
?round(8.025,2)
8.02
?round(9.025,2)
9.02
?round(10.025,2)
10.02

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-8 15:24 | 显示全部楼层
baomaboy 发表于 2012-5-8 15:20
事实上你用VBA中的Round当4舍6入5成双用会出现很多的错误值,不只是4.03,
Round(1.225, 2)
Round(1.245, ...

那不是要用自定义函数了?有没有现成的?

TA的精华主题

TA的得分主题

发表于 2012-5-8 15:25 | 显示全部楼层
本帖最后由 zzq0101 于 2012-5-8 15:26 编辑

round(4.025,2)=4.03     round(4.065,2)=4.07     都会出错的!     
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-2 23:23 , Processed in 0.026085 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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