:salut:
Pour suivre les conseils de "maxim_um" ;)
1) Comment peut-on additionner des nombres à virgule en batch ?
2) Comment récupérer un résultat non tronqué après une division ?
:merci:
Version imprimable
:salut:
Pour suivre les conseils de "maxim_um" ;)
1) Comment peut-on additionner des nombres à virgule en batch ?
2) Comment récupérer un résultat non tronqué après une division ?
:merci:
Salut,
avec du batch hybride par exemple:
"non bien tester "
exemple:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 @echo off :ndef cls echo. set /p "_set=->> " if not defined _set (goto:ndef) for %%: in ("(=^(",")=^)") do (call set _set=%%_set:%%~:%%) for %%: in ("E = %%_set%%","WScript.Echo E") do >>_.Vbs (call echo.%%~:) for /f "" %%: in ('cscript /nologo _.Vbs') do (call set _t=%%:) echo. if defined _t (call echo RESULTAT=[ %%_t:,=.%% ]) del _.vbs 2>nul pause
ou bien avec la commande externe Gawk:Code:
1
2
3 ((0.25 * 63.23) / (3.25 - 1.23)) / 2 => 3.91274..
exemple basique:
Code:
1
2
3
4
5 set v1=2.25 set v2=0.25 gawk "BEGIN{print \"%V1% * %v2% est egal à \"%v1% * %v2%}"
C'est également possible en découpant les nombre en partie entière / partie décimale, aligner les chiffres, effectuer les opérations (simple pour l'addition, plus chaud pour les autres), puis recombiner les résultats. C'est le principe de calcul par virgule fixe, un vieux truc d'accélération des calculs réels lorsque les FPU n'étaient pas toujours présents sur les machines.
Salut I'm_Here, pourrais-tu expliquer ce bout de code pas à pas parce que je débute et je ne comprends pas tout :pleure:
:merci:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 @echo off :ndef cls echo. set /p "_set=->> " if not defined _set (goto:ndef) for %%: in ("(=^(",")=^)") do (call set _set=%%_set:%%~:%%) for %%: in ("E = %%_set%%","WScript.Echo E") do >>_.Vbs (call echo.%%~:) for /f "" %%: in ('cscript /nologo _.Vbs') do (call set _t=%%:) echo. if defined _t (call echo RESULTAT=[ %%_t:,=.%% ]) del _.vbs 2>nul pause
Enlève le "del _.vbs 2>nul" à la fin, puis regarde le fichier "_.vbs" généré : ce sera sûrement beaucoup plus clair (enfin, si tu connais un peu le VBScript).
Ouai j'avais juste bougé le "pause" avent le del :)
C'est juste pour m'améliorer en batch que je voudrais avec des explication détaillées 8-)
;)Code:
1
2
3
4
5
6
7
8
9 @echo off cls set /p Calcule= echo E = %Calcule% >> __.vbs echo WScript.Echo E >> __.vbs cscript /nologo __.Vbs del __.vbs 2>nul pause
Comme à dit Mac LAK ça sera plus clair si tu visualises le fichier .vbs
le principe est simple, laisser cscript.exe faire les calculs au lieu de cmd.exe
ouai j'ai bien compris j'ai même fait un petit exemple plus simple ;)
Par contre comme je l'ai dit... des petites explications sur ton code seraient les bienvenues ^^