VBA - 获取数字的小数部分,Int() 的问题

问题描述 投票:0回答:1

我正在尝试在 Excel 中的 VBA 中获取数字的小数部分。是否有一种特定的方法最适合获取数字的小数部分?

我尝试了两种不同的方法。其中一种方法给出的预期结果为 0.1。另一种方法给出了意想不到的结果 9.99999999999996E-02。请帮助我理解为什么我会收到这个意外的结果。请参考以下代码:

    Dim DecNumber As Double
    Dim TempSplit() As String
    Dim DecFract As Double
    
    DecNumber = 15.1
    
    'METHOD 1
    'Gives unexpected result of 9.99999999999996E-02
    DecFract = DecNumber - Int(DecNumber)
    
    'METHOD 2
    'Gives expected result of 0.1
    TempSplit() = Split(DecNumber, ".")
    DecFract = TempSplit(1) / (10 ^ Len(CStr(TempSplit(1)))) 
excel vba split integer decimal
1个回答
0
投票

结果会受到浮点舍入误差的影响,因为 VBA 不是为高精度科学计算而设计的。

请尝试一下。

Sub demo()
    Dim DecNumber As Double
    Dim TempSplit() As String
    Dim DecFract As Currency
    
    DecNumber = 15.1
    
    'METHOD 1
    DecFract = DecNumber - Int(DecNumber)
    Debug.Print DecFract
    'METHOD 2
    'Gives expected result of 0.1
    TempSplit() = Split(DecNumber, ".")
    DecFract = TempSplit(1) / (10 ^ Len(CStr(TempSplit(1))))
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.