我有一个奇怪的情况:
这是我的代码:
dim vl1,vl2,vl3 as single
vl1=26,999.99
vl2=27,000
vl3=vl1-vl2
现在我希望vl3
上的值为-0.01
但vl3
上的值为-0.009765625
。
为什么?
我也尝试
Messagebox.Show(26,999.99-27,000)
,显示的值与上面相同。
答案 0 :(得分:0)
试试这个:
Sub Main()
Dim vl1, vl2, vl3 As Decimal
vl1 = 26999.99D
vl2 = 27000D
vl3 = vl1 - vl2
End Sub
您的数据类型Single
没有足够的精确度(数字)来说明27000中的0.01
修改1
然后使用转化
尝试Decimal
中的操作
Dim vl1, vl2, vl3 As Single
vl1 = 26999.99 'Get from SQL
vl2 = 27000 'Get from SQL
vl3 = CSng(CDec(vl1) - CDec(vl2))
' Sent to SQL