慎重使用VBA中的Round函数进行四舍五入
(2017-06-24 12:02:49)分类: 计算机 |
在Excel2013工作表中使用Round函数是采用“四舍五入”,而在VBA中Round函数是采用“银行家舍入”,建议大家在VBA中(程序设计中)慎重使用Round函数来四舍五入。(注:很多程序设计中是采用“银行家舍入”)
在Access中四舍五入可以采用以下方法:
1、使用自定义函数
Public Function RoundFormat(A As Double, B As Integer) As
Double
End Function
2、使用Int函数(对于非负数)
举例
要对A进行四舍五入,保留2位小数,这样处理
INT((A*1000+5)/10)/100
要对A进行四舍五入,保留到整数,这样处理
INT((A*10+5)/10)
对于负数大家可以自己思考,结合If进行判断处理负数与非负数。
实际上,我们实际工作中很时候是对正数进行四舍五入。这样就更简单了。
3、结合Int函数编写的自定义函数
Public Function Roundd(A As Double, B As Integer) As
Double
End Function
后来,为了弄清Round不能四舍五入的原因:是BUG?是其它?于是费了一番功夫查找了一些“四舍五入”的资料:“四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一”。这个四舍五入法是一个国际标准,大部分的编程软件都使用的是这种方法,这种方法还有个名字叫“银行家舍入”,据说国际上一般都是用这种方法的。
明白这个道理,在VBA中实现真正的“四舍五入”就更容易了,得出第4种四舍五入更好的方法
4、“银行家舍入”变通法实现“四舍五入”
举例
要对A进行四舍五入,保留B位小数,Round(A+0.1^(B+2),B)
如果在Excel
Application.Round(A,B)