1

我是 Visual Basic 的新手,我正在使用小数进行一些计算,但是 Visual Studio 在每次计算时都会引发此错误:“Option Strict On 不允许从 'Double' 到 'Decimal' 的隐式转换”。我理解这个错误的含义。我只是想知道为什么答案首先是 Double 。这是代码(产生错误的行是 FWT = 0.1 * (taxable - 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() 来解决错误,所以我将实现它来解决它(除非有人知道更好的解决方案),但我只是想了解为什么使用 Decimal 变量和文字数字的计算会产生双倍的。

4

1 回答 1

2

0.1作为Decimal还是Double

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

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

于 2013-04-25T03:13:23.567 回答