什么是在VBA Access中进行回合的最佳方式?
我目前的方法使用Excel方法
Excel.WorksheetFunction.Round(...
但我正在寻找一种不依赖于Excel的方法.
小心,VBA Round函数使用Banker的舍入,它将.5舍入为偶数,如下所示:
Round (12.55, 1) would return 12.6 (rounds up) Round (12.65, 1) would return 12.6 (rounds down) Round (12.75, 1) would return 12.8 (rounds up)
而Excel工作表功能回合,总是向上舍入.5.
我做了一些测试,它看起来像.5向上舍入(对称舍入)也用于单元格格式化,也用于列宽舍入(当使用通用数字格式时).'精确显示'标志似乎不会进行任何舍入,它只使用单元格格式的舍入结果.
我尝试在VBA中实现Microsoft的SymArith函数进行舍入,但是当你尝试给它一个像58.55这样的数字时,发现Fix有错误.函数给出58.5而不是58.6的结果.然后我终于发现你可以使用Excel工作表Round函数,如下所示:
Application.Round(58.55,1)
这将允许您在VBA中进行正常的舍入,尽管它可能不如某些自定义函数快.我意识到问题已经完全循环,但是想要将其包含在内以便完整.
在接受的答案上稍微扩展一下:
"Round函数执行round到even,这不同于round到large."
- 微软
格式总是向上舍入.
Debug.Print Round(19.955, 2) 'Answer: 19.95 Debug.Print Format(19.955, "#.00") 'Answer: 19.96
ACC2000:使用浮点数时舍入错误:http://support.microsoft.com/kb/210423
ACC2000:如何按所需增量向上或向下舍入数字:http://support.microsoft.com/kb/209996
圆函数:http://msdn2.microsoft.com/en-us/library/se6f2zfx.aspx
如何实现自定义舍入过程:http://support.microsoft.com/kb/196652