Recherche…


Introduction

Les fichiers par lots ne permettent que des calculs sur des nombres entiers de 32 bits, bien que cela puisse être contourné par différentes approches.

Utiliser Powershell

Comme le PowerShell est installé par défaut sur tous les systèmes Windows à partir de 7/2008, il peut être utilisé pour des calculs plus complexes:

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

Attention aux doubles guillemets supplémentaires dans le for /f qui empêchent les crochets d'entrer en conflit avec la syntaxe de la commande for.

Le problème potentiel est que Powershell est beaucoup plus lent que l’utilisation de wsh / vbscript / jscript à cause du chargement du framerwork .net

Utiliser jscript

WSH/JScript est installé sur tous les systèmes Windows depuis que l’utilisation de NT pour des calculs plus complexes la rend très portable. JScript est plus facile à combiner avec un fichier batch:

@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)));

Avec cette approche, vous pouvez mettre tout votre code dans un seul fichier. C'est plus rapide que d'utiliser Powershell. Ici et ici, des scripts plus avancés peuvent être trouvés (qui peuvent être utilisés comme fichiers externes).

Emulation de calculs de stylo et de papier, implémentations de fonctions mathématiques

  1. On peut trouver ici la bibliothèque mathématique la plus complète qui émule les calculs de stylo et de papier et qui permet de travailler avec des nombres plus importants.
  2. Voici d'autres exemples d'émulations de stylo et de papier: ADD , Comparison , Multiply
  3. Certaines implémentations de fonctions mathématiques peuvent être trouvées ici .


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow