当前位置:  开发笔记 > 编程语言 > 正文

如何在MS Access,VBA中进行舍入

如何解决《如何在MSAccess,VBA中进行舍入》经验,为你挑选了2个好方法。

什么是在VBA Access中进行回合的最佳方式?

我目前的方法使用Excel方法

Excel.WorksheetFunction.Round(...

但我正在寻找一种不依赖于Excel的方法.



1> Lance Robert..:

小心,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中进行正常的舍入,尽管它可能不如某些自定义函数快.我意识到问题已经完全循环,但是想要将其包含在内以便完整.



2> Fionnuala..:

在接受的答案上稍微扩展一下:

"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

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有