VB6 - CDbl截断问题

时间:2010-09-09 09:05:14

标签: vb6

我在使用VB6中的字符串转换为Double时遇到问题。

dblValue = CDbl(strValue)

当strValue = 88888888888888888时,dblValue = 8.88888888888889E + 16,这会在演员表中截断数字。有没有人知道这方面的任何方式?

提前致谢!

2 个答案:

答案 0 :(得分:3)

您可以将代码更改为使用Decimal而不是Double。该数据类型具有存储值的必要精度。

不幸的是,VB6不支持直接创建Decimal类型的变量,但您可以将数据存储为Variant子类型Decimal,例如

Dim decValue As Variant
decValue = CDec(strValue)

您可以像处理任何其他数字数据类型一样操纵此数据,您只是对变量没有严格的类型安全性。

答案 1 :(得分:2)

没有办法解决这个问题,因为Double只精确到15位有效数字,但88888888888888888有17位数字。如果将数字转换为Double,将会丢失精确度。

如果您需要准确保留所有数字,则应使用CDec的十进制类型。