Visual Basic十进制计算结果为Double

时间:2013-04-25 02:48:24

标签: vba visual-studio-2012

我是Visual Basic的新手,我正在使用Decimal进行一些计算,但Visual Studio会在每次计算时抛出此错误:“Option Strict On禁止从'Double'到'Decimal'的隐式转换”。我理解这个错误的含义。我只是想知道为什么答案首先是Double。这是代码(产生错误的行是读取FWT = 0.1 *(应税 - 116)的行):

Private Function GetFWT(ByVal allowances As Integer, ByVal status As String, ByVal gross As Decimal) As Decimal

    Dim FWT As Decimal
    Dim taxable As Decimal

    taxable = gross - CDec(allowances * 70.19)

    If status = "S" Then
        If taxable < 116 Then
            FWT = 0
        ElseIf taxable >= 116 And taxable < 200 Then
            FWT = 0.1 * (taxable - 116)
        End If
    End If

End Function

我已经删除了其他ElseIf语句,因为它们都很相似,并且有很多。 Visual Studio建议使用CDec()来解决错误,所以我将实现它来解决它(除非有人知道更好的解决方案),但我只是想了解为什么使用十进制变量和文字数的计算会产生一个双

1 个答案:

答案 0 :(得分:2)

0.1Decimal还是Double

我的理解是文字将被解释为Double,这将产生Double结果。

您可以尝试:FWT = 0.1D * (taxable-116)