我是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()来解决错误,所以我将实现它来解决它(除非有人知道更好的解决方案),但我只是想了解为什么使用十进制变量和文字数的计算会产生一个双
答案 0 :(得分:2)
0.1
是Decimal
还是Double
?
我的理解是文字将被解释为Double,这将产生Double
结果。
您可以尝试:FWT = 0.1D * (taxable-116)