サーチ…


前書き

バッチファイルでは32ビットの整数計算しかできませんが、これはさまざまなアプローチでバイパスできます。

PowerShellの使用

PowerShellは、7/2008以降のすべてのWindowsシステムにデフォルトでインストールされるため、より複雑な計算に使用できます。

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

for /f二重引用符を追加すると、括弧がforコマンド構文と競合するのを防ぐことができます。

潜在的な問題は、powershellが.net framerworkの読み込みのためにwsh / vbscript / jscriptを使用するよりもはるかに遅いことです

jscriptの使用

WSH/JScriptはNT以来、すべてのWindowsシステムにインストールされていますので、より複雑な計算に使用するとかなりポータブルになります。 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)));

この方法では、コード全体を1つのファイルにまとめることができます。これは、PowerShellを使用するよりも高速です。 ここ、ここで 、より高度なスクリプトは(外部ファイルとして使用することができる)見つけることができます。

ペンと紙の計算をエミュレートする、数学関数の実装

  1. ここでは、ペンとペーパーの計算をエミュレートする最も包括的な数学ライブラリを見つけることができ、大きな数字で作業することができます。
  2. ペンと紙のエミュレーションの別の例を次に示します: ADDComparisonMultiply
  3. いくつかの数学関数の実装をここで見つけることができます


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow