我在VBA中有一个变量,我需要将其截断为4位有效数字。我似乎找不到任何不会向上或向下舍入数字的东西。但我只想删除第4位重要人物之后的数字。我试过了,
compressibility = round(compress, -3 - (Int(Log(Abs(compress)))))
它删除了第4位后的数字,但仍然将数字向上舍入。
Compress是一个大约0.000245848385的数字作为例子,我需要压缩率为0.0002458。
任何建议都会很棒!感谢。
答案 0 :(得分:4)
尝试此功能:
Function RoundSignificant(ByVal dValue As Double, iFigures As Integer)
Dim dSig As Double
dSig = Abs(dValue)
dSig = Application.Log10(dSig)
dSig = 1 + Int(dSig)
dSig = iFigures - dSig
RoundSignificant = Round(dValue, dSig)
End Function
Sub test()
Debug.Print RoundSignificant(0.000245848385, 4)
End Sub
答案 1 :(得分:0)
使用工作表函数:
=VALUE(TEXT(compress,"0.000E+00"))
对于VBA
CDbl(Format(compress,"0.000E+00"))
希望有所帮助。
答案 2 :(得分:0)
在我看来,你想避免四舍五入,但不要四舍五入,因为四舍五入应该产生你想要的确切结果。因此,您可以使用Excel WorksheetFunction.RoundDown 方法来实现所需的结果,而不是使用VBA Round 函数。
ROUNDDOWN(0.0002458的 6 强> 548385; 7)= 0.000245800000 ROUNDDOWN(0.0002458 <强> 3 强> 548385; 7)= 0.000245800000
答案 3 :(得分:0)
Sub test()
Dim compress As Double
compress = 0.000245858
Dim compressibility As Double
compressibility = Int(compress * 10 ^ -(Int(Log(Abs(compress))) - 3)) / 10 ^ -(Int(Log(Abs(compress))) - 3)
Debug.Print compressibility
End Sub