我在使用VB6中的字符串转换为Double时遇到问题。
dblValue = CDbl(strValue)
当strValue = 88888888888888888时,dblValue = 8.88888888888889E + 16,这会在演员表中截断数字。有没有人知道这方面的任何方式?
提前致谢!
答案 0 :(得分:3)
您可以将代码更改为使用Decimal
而不是Double
。该数据类型具有存储值的必要精度。
不幸的是,VB6不支持直接创建Decimal
类型的变量,但您可以将数据存储为Variant
子类型Decimal
,例如
Dim decValue As Variant
decValue = CDec(strValue)
您可以像处理任何其他数字数据类型一样操纵此数据,您只是对变量没有严格的类型安全性。
答案 1 :(得分:2)
没有办法解决这个问题,因为Double只精确到15位有效数字,但88888888888888888有17位数字。如果将数字转换为Double,将会丢失精确度。
如果您需要准确保留所有数字,则应使用CDec
的十进制类型。