vb中16进制BF5B01C49F1591转换10进制的问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 22:19:55
我的代码:
Private Sub Form_Click()
Dim i%, b%(20), a As Double, s As String
s = "BF5B01C49F1591"
For i = 1 To Len(s)
Select Case Mid(s, Len(s) - i + 1, 1)
Case "A": b(1) = 10
Case "B": b(i) = 11
Case "C": b(i) = 12
Case "D": b(i) = 13
Case "E": b(i) = 14
Case "F": b(i) = 15
Case Else: b(i) = Val(Mid(s, Len(s) - i + 1, 1))
End Select
Next i
For i = 1 To Len(s): a = a + b(i) * 16 ^ (i - 1): Next i
Print s; "转换成10进制后的数为"; Format(a, "0000000000000000")
End Sub
输出结果为:53861783703590300
而电脑的计算器显示结果为:53861783703590289
怎样修改使得结果一致

请参考这里:
http://hi.baidu.com/lyglay/blog/item/a7c52951fefe632042a75bfb.html
超大数字10进制16进制2进制间的相互转换

主要是Double精度不够的问题,用大数运算的方法处理,就是用串,进行分段处理。