我正在尝试获取数字的日志,但看起来像Worksheet函数给出了一个答案,而VBA则是另一个答案。
在VB中,使用Log(Range("A2"))
,其中A2是7,我得到1.94591014905531
,这是正确的答案。但是,如果在工作表中,我使用=Log(A2,10)
或=Log10(a2)
,我得到0.84509804
。这里发生了什么?
VBA的Log
功能是自然日志。如果您想要log base ten,则必须使用对数标识来转换碱基。像这样:Log(x)/Log(10)
。
Function roundit1(nn As Variant, sd As Variant)
nn = Val(nn)
If Not (nn = 0) Then
xx = (1 + Int(Log(Abs(nn)) / Log(10)))
Else
xx = 0
End If
' significant digits
roundit = sd - xx
If roundit < 0 Then roundit = 0
roundit1 = Round(nn, roundit)
End Function