VBScript: увеличить точность до 16 знаков после запятой, чтобы обойти экспоненциальное представление?

Я искал этот ответ, но ничего не нашел для VBS.

Например:

dim num
num = 1234567890123456 'a 16 digit number
msgbox num

Любая работа с num приведет к тому, что число будет отображаться в экспоненциальном представлении.

Как я могу этого избежать?


person brehon1104    schedule 26.12.2012    source источник


Ответы (2)


16-значный номер изменен на Double с помощью VBScript, потому что ни Int, ни Long не могут хранить этот номер. Вы можете использовать функцию FormatNumber, чтобы отобразить его как целое число:

FormatNumber(Expression, NumDigitsAfterDecimal, IncludeLeadingDigit, UseParensForNegativeNumbers, GroupDigit)

num = 1234567890123456
msgbox FormatNumber(num, 0, -2, -2, false)
person Salman A    schedule 26.12.2012
comment
Спасибо. Я новичок и не знал о функции FormatNumber. Вот фактический код, который я использую: dim num num = 4895390000000005 FormatNumber(num, 0, -2, -2, false) msgbox num вывод: 4895390000000010 Я предполагаю, что параметры можно изменить, чтобы исправить это. Любые указатели? - person brehon1104; 26.12.2012
comment
Числа с плавающей запятой не точны. Похоже, что 4895390000000005 не может быть точно представлено двойным. Вы можете рассматривать его как строку, например. num = "4895390000000005": msgbox num. - person Salman A; 26.12.2012

Если вам не нравится текстовое представление вашего номера по умолчанию, запросите его явно.

msgbox FormatNumber(num, 2)

(ссылка)

Это, однако, не имеет ничего общего с тем, как число на самом деле хранится (как double).

person GSerg    schedule 26.12.2012