Как работать с большими числами с VBScript - PullRequest
0 голосов
/ 17 июня 2010

Я создаю скрипт для автоматического тестирования финансового приложения.

Использование VbScript в качестве языка.

Нужно манипулировать большими числами с плавающей запятой (более 10 миллиардов) - сделать добавление,умножение операций и так далее.Но у vbscript нет типа данных для больших чисел.

Пожалуйста, посоветуйте мне какое-нибудь решение или обходной путь для этой проблемы.

Может быть, кто-то сталкивался с этой проблемой раньше?

Спасибо!

Ответы [ 4 ]

1 голос
/ 16 декабря 2010

Используйте это:

function mmod(a,moduloValue)
  dim k,t
  k=CDbl(a)
  t=Fix(k/moduloValue)
  mmod = k-(t*moduloValue)
end function

msgbox mmod(4010051786300000078934,1024)

Выход: 86

msgbox mmod(4010051786300000078934,2)

Выход: 0

0 голосов
/ 27 ноября 2014

@ Ссылка на Роба хороша, но его выбор типа данных опасен. Используйте тип Валюта, поскольку он представлен внутри номера с фиксированной точкой.

Если вам нужно более 4 десятичных знаков, тогда вы сталкиваетесь с:

  • необходимость менять языки (Java, C # и другие поддерживают типы данных с такими именами, как BigDecimal, которые подходят и могут иметь большую точность)
  • необходимо написать собственную библиотеку, против которой я настоятельно рекомендую (она должна быть водонепроницаемой, иначе вы все еще обрабатываете свои данные).

Двоичные числа с плавающей запятой не могут точно представлять десятичные числа, и вы можете получить ошибки округления, которые делают ваши данные недействительными. См. Почему бы не использовать Double или Float для представления валюты? , если вам нужны подробности.

0 голосов
/ 17 июня 2010

VBScript имеет несколько типов данных для больших чисел. В вашем случае вы, вероятно, хотите использовать Double. Вот обзор: http://www.csidata.com/custserv/onlinehelp/vbsdocs/vbs0.htm

0 голосов
/ 17 июня 2010

Попробуйте использовать десятичный тип данных: http://msdn.microsoft.com/en-us/library/47zceaw7%28VS.80%29.aspx

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