VB6 Round(x,0) 问题

标签 vb6 rounding

很久以前,我的公司出现了一些意想不到的结果,我发现了这个问题:

Dim k As Double
Dim r As Integer
k = 182.5
r = Round(k,0)

r 的结果是 182,这给我的公司造成了问题,现在我必须修复它。

问题是我观察到了这一点:
Dim k As Double
Dim r As Integer
k = 186.5
r = Round(k,0)

r = 187

当 double 数的整数部分的单位大于 5 时,Round 会按照我的预期进行,但对于单位 <=5 则不会。

我怎么解决这个问题?是否有另一个函数来获得正确的舍入?

最佳答案

这称为银行家四舍五入,并尝试根据最接近的数字是奇数还是偶数在 0.5 上分配四舍五入。

要四舍五入 .5:

cint(format(182.5, "#0")) ''183
cint(format(186.5, "#0")) ''187

关于VB6 Round(x,0) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40548777/

相关文章:

带有 String 构造函数的 Java BigDecimal 错误与 ROUND_HALF_UP 舍入

java - 有没有办法去掉5舍入和向上舍入的奇偶规则?

vb6 - 在 VB6 中,在文件夹名称包含空格的路径中执行 .bat 文件时出现问题

string - 这条线有什么问题吗?

C# 相当于 Form.Activate 事件?

java - 浮点舍入(在 Java 中)

vb6 - 如何比较 VB6 中可执行文件的大小?

vba - Spread Designer 6.0 Visual Basic 6.0 复选框默认选中

java - java.math.RoundingMode 是如何工作的?

wpf - xaml 语法中的圆括号