我正在尝试将 14 位十六进制数字转换为十进制。
我有这个 VBA 代码。
Option Explicit
Public Function HexadecimalToDecimal(HexValue As String) As Double
Dim ModifiedHexValue As String
ModifiedHexValue = Replace(HexValue, "0x", "&H")
HexadecimalToDecimal = CDec(ModifiedHexValue)
End Function
用这样的数字转换为十进制
我不断在大量数据中获得随机结果。有时在其他时间发现数字相差 6 或 2。
最佳答案
尝试从 Double
更改函数的返回类型至Variant
. Double
精度只有大约 15 位十进制数字,因此例如不能准确捕获值 1261213964639872 (有 16 位数字)。它可以获得的最接近的是 1261213964639870。通过将返回类型更改为 Variant
,CDec
返回的完整精度将被保留。您不能使用 Decimal
返回类型,因为 VBA 出于某种原因不支持这个。
关于excel - 从十六进制字符串转换为 Double 会产生错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244170/