Поиск…


Вступление

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

Использование powershell

Поскольку powershell устанавливается по умолчанию для каждой системы Windows с 7/2008 и выше, ее можно использовать для более сложных вычислений:

@echo off
set "expression=(2+3)*10/1000"
for /f %%# in ('"powershell %expression%"') do set result=%%#
echo %result%

Обратите внимание на дополнительные двойные кавычки в for /f которые препятствуют конфликтам с конфликтами синтаксиса команды.

Потенциальная проблема заключается в том, что powershell намного медленнее, чем использование wsh / vbscript / jscript из-за загрузки .net framerwork

Использование jscript

WSH/JScript устанавливается в каждой системе Windows с NT, поэтому его использование для более сложных вычислений делает его довольно портативным. JScript проще комбинировать его с пакетным файлом:

@if (@codesection==@batch) @then
@echo off

set "expression=2*(2+3)/1000"
for /f %%# in ('cscript //nologo //e:jscript "%~f0" "%expression%"') do set 
result=%%#
echo %result%
:: more batch code

exit /b %errorlevel%
@end
WScript.Echo(eval(WScript.Arguments(0)));

С помощью этого подхода вы можете поместить весь свой код в один файл. Это быстрее, чем использование powershell. Здесь и здесь можно найти более сложные скрипты (которые могут использоваться как внешние файлы).

Эмуляция вычислений ручек и бумаги, реализация математических функций

  1. Здесь можно найти самую полную математическую библиотеку, которая эмулирует вычисления ручек и бумаги и позволяет работать с большими числами.
  2. Вот еще примеры эмуляции ручек и бумаги: ADD , Comparison , Multiply
  3. Некоторые математические функции могут быть найдены здесь .


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow