如何在 VBA 中截断双精度



我在 VBA 中有一个变量,我需要将其截断为 4 个有效数字。我似乎找不到任何不会向上或向下舍入数字的东西。但我只想删除第 4 个有效数字之后的数字。我试过了,

compressibility = round(compress, -3 - (Int(Log(Abs(compress)))))

它会删除第 4 位数字之后的数字,但仍会将数字向上舍入。

以 0.000245848385 为例,压缩率是 0.0002458 左右的数字。

任何建议都会很棒!谢谢。

试试这个函数:

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

使用工作表函数:

=VALUE(TEXT(compress,"0.000E+00"))

对于VBA

CDbl(Format(compress,"0.000E+00"))

希望有帮助。

在我看来,您希望避免向上舍入,但不向下舍入,因为向下舍入应该产生您想要的确切结果。因此,您可以使用ExcelWorksheetFunction.RoundDown方法来实现所需的结果,而不是使用VBARound函数。

四舍五入(0.00024586548385;7(=0.000245800000 四舍五入(0.00024583548385;7(=0.000245800000

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

相关内容

  • 没有找到相关文章

最新更新