Консультация № 159891
07.02.2009, 23:43
0.00 руб.
0 5 2
Здравствуйте!
У меня такой вопрос: как можно обозначить переменную типа Decimal в VB6? Если просто написать "Dim A AS Decimal", то он не понимает этот тип. Как быть?
Большое спасибо!

Обсуждение

Неизвестный
08.02.2009, 04:59
общий
это ответ
Здравствуйте, AkaProc!

Decimal в VB6 поддерживается только косвенно. Хранить его можно в переменной типа Variant. Можно привести значение к типу Decimal, но существует он только в обертке.
Неизвестный
08.02.2009, 15:55
общий
это ответ
Здравствуйте, AkaProc!

тип данных Decimal допускает - 10^38 +1 to 10^38 - 1

для работы с такими данными, в VB могут быть использованы переменные типа:
Double -1.79769313486231E308 to -4.94065645841247E-324, 4.94065645841247E-324 to 1.79769313486232E308
Single -3.402823E38 to -1.401298E-45, 1.401298E-45 to 3.402823E38

Евгений



Неизвестный
08.02.2009, 20:39
общий
Variant - специфический по реализации тип данных, он допускает присвоение NULL
и его использование накладывает свои ограничения.
В тоже время в VBS применяется только он и это не ограничивает функциональность VBS.
Обязательно стоит декларировать переменные, даже если это "подъедающий" ресурсы Variant

Евгений.
Неизвестный
08.02.2009, 22:58
общий
Спасибо!
Неизвестный
13.02.2009, 15:45
общий
у меня VB6 SP3

выдержка из хелпа:
Переменные типа Decimal сохраняются как 96-разрядные ( 12-байт ) целые без знака, масштабируемые степенями 10. Степень масштабирования определяет число знаков дробной части, которое может изменяться от 0 до 28. Для степени масштабирования 0 ( числа без дробной части ) , максимальными по абсолютной величине значениями являются +/-79 228 162 514 264 337 593 543 950 335.

я в программе использую для хранения данных целый тип ( если необходимо для суммы, то храню в копейках. )

Dim n1 As Variant
n1 = CDec(0)

т.е. изначально определяю 0 знаков после запятой.

а дальше операции как с обычными числами
Форма ответа