我是 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 变量和文字数字的计算会产生双倍的。