VB6 - проблема усечения CDbl - PullRequest
       3

VB6 - проблема усечения CDbl

2 голосов
/ 09 сентября 2010

У меня проблемы с приведением к Double из строки в VB6.

dblValue = CDbl(strValue)

Когда strValue = 88888888888888888, dblValue = 8.88888888888889E + 16, который усекает число во время чтения.Кто-нибудь знает как-нибудь обойти это?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 09 сентября 2010

Вы можете изменить свой код, чтобы использовать Decimal вместо Double. Этот тип данных обладает необходимой точностью для хранения значения.

К сожалению, VB6 не поддерживает создание переменных типа Decimal напрямую, но вы можете сохранить данные как Variant подтипа Decimal, например,

Dim decValue As Variant
decValue = CDec(strValue)

Вы можете манипулировать этими данными точно так же, как и любым другим числовым типом данных, у вас просто не будет строгой безопасности типов для переменных.

2 голосов
/ 09 сентября 2010

Нет никакого способа обойти это, потому что двойной является точным только до 15 значащих цифр, а 88888888888888888 имеет 17 цифр.Точность будет потеряна, если вы преобразуете число в Double.

Вы должны использовать десятичный тип на CDec, если вам нужно точно сохранить все цифры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...