Обходные пути: 32-разрядный
Обходные пути для 32-разрядного ограничения включают в себя:
деление на 1000 (или любая степень 10) путем обрезания последних (3) цифр
разбивая числа на отдельные десятичные цифры и выполняя всю математику и перенося логику "вручную"
другие скриптовые языки
Обходной путь # 1 может использоваться для добавления дискового пространства, например:
Пример кода "Чоп"
Хитрость заключается в том, что каждое (большое) число обрабатывается как строки, затем отбираются самые правые 6 символов (цифр), и только тогда результат обрабатывается как число.
Это довольно грубый обходной путь, поскольку он "округляет" все числа перед выполнением математики. Однако добавление половины мегабайта для каждого подкаталога (% Count% / 2) к% Total% компенсирует усечения, поэтому итоговый итог более точен, чем отдельные числа. Обратите внимание, что числа не представляют "настоящие" мегабайты (1024 x 1024), а, скорее, миллионы байтов (1000 x 1000).
Обходной путь № 2 отлично демонстрируется пакетными файлами Брайана Уильямса:
Add.bat
IsLarger.cmd
Multiply.cmd
Идеально, но довольно сложно.
Обходной путь № 3, другие языки сценариев, не требует пояснений.
Обходные пути: целые числа
Нет реальных обходных путей, позволяющих использовать математику с плавающей запятой, кроме использования других языков сценариев.
Единственным исключением может быть, если у вас ограниченное и фиксированное количество десятичных знаков (например, 2), тогда вы можете просто умножить все на 100.
Чтобы отобразить десятичный разделитель в конечных результатах, объедините деление Ингера на 100, затем десятичный разделитель и деление по модулю на 100:
SET Whole = Result / 100 SET "Fraction = Result %% 100" SET Result =% Whole%.%Доля%
Это может нарушить 32-битный лимит.
В целом, для математики с плавающей точкой я бы рекомендовал использовать другие языки сценариев.