gpt4 book ai didi

VBA 终极四舍五入

转载 作者:行者123 更新时间:2023-12-04 21:39:57 27 4
gpt4 key购买 nike

我已经阅读了很多关于在 Excel 中舍入的内容。我发现 VBA 的 Round() 函数使用“银行家舍入”,而 Application.WorksheetFunction.Round() 或多或少使用“正常”舍入。但这并没有帮助我理解这一点:

? Round(6.03499,2)
6.03

为什么?我想看 6.04,而不是 6.03!诀窍是
? Round(Round(6.03499,3),2)
6.04

我想了想,开发了一个这样的子程序:
Option Explicit
Function DoRound(ByVal value As Double, Optional ByVal numdigits As Integer = 0) As Double
Dim i As Integer
Dim res As Double
res = value
For i = 10 To numdigits Step -1
res = Application.Round(res, i)
Next i
DoRound = res
End Function

它工作正常。
? DoRound(6.03499,2)
6.04

但这并不酷。 Excel中是否有任何内置的正常舍入?

最佳答案

如果你四舍五入6.03499到 3 位数,它将是 6.035 - 哪个是对的。
如果你四舍五入6.03499到 2 位,它将是 6.03 - 哪个是对的

但是 - 您首先四舍五入到 3 位,然后到 2 的示例也是正确的,通过以下语句:Round(6.03499, 3)给出 6.035Round(6.035, 2)给出 6.04

如果你想要Round(6.03499, 2)要给出 6.04,您必须使用 Application.WorksheetFunction.RoundUp

关于VBA 终极四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18459777/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com