
118551
08.11.2014, aktualisiert 10.11.2014
Genaue Prozent Rechnung!
Hallo Leute
Ich möchte in einen Spiel eine Prozentrechnung der vorhandenen Leben Haben
also habe ich ein Test mit batch gestartet und bemerkt das batch die Komma stellen
nicht berücksichtigt. Nun stellt sich mir die frage wie kann ich so was implementieren ohne
die übersieht zu verlieren!
Ihr könnt auch auf vbs etc. Ausweichen wichtig sind mir 2 bis 4 stellen mindestens nach dem Komma!!!
(Man Kann es nicht nur fürs Spiel verwenden!)
Danke im voraus
LG DomiZone1
Ich möchte in einen Spiel eine Prozentrechnung der vorhandenen Leben Haben
also habe ich ein Test mit batch gestartet und bemerkt das batch die Komma stellen
nicht berücksichtigt. Nun stellt sich mir die frage wie kann ich so was implementieren ohne
die übersieht zu verlieren!
Ihr könnt auch auf vbs etc. Ausweichen wichtig sind mir 2 bis 4 stellen mindestens nach dem Komma!!!
(Man Kann es nicht nur fürs Spiel verwenden!)
Danke im voraus
LG DomiZone1
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 254272
Url: https://administrator.de/forum/genaue-prozent-rechnung-254272.html
Ausgedruckt am: 09.06.2025 um 12:06 Uhr
8 Kommentare
Neuester Kommentar
Hallo DomiZone1.
Selbst wenn du diese Werte mit Nachkommastellen hast, kennt Batch immer noch keine Fließkommazahlen. Das heißt auch ein numerischer Vergleich ist nicht möglich.
Wenn es darum geht zu vergleichen, dann verrücke dein Komma (durch Anhängen von Nullen am Divident). Ob nun 100 % zu 25,3412 % verglichen wird (was in Batch nicht funktioniert) oder aber 1000000 zu 253412 (was in Batch sehr wohl funktioniert) ist doch völlig egal.
Grüße
rubberman
::Und Hier sollen die HP in Prozent umgerechnet werden
Was sind denn HP und um welche konkreten Werte geht es?Selbst wenn du diese Werte mit Nachkommastellen hast, kennt Batch immer noch keine Fließkommazahlen. Das heißt auch ein numerischer Vergleich ist nicht möglich.
Wenn es darum geht zu vergleichen, dann verrücke dein Komma (durch Anhängen von Nullen am Divident). Ob nun 100 % zu 25,3412 % verglichen wird (was in Batch nicht funktioniert) oder aber 1000000 zu 253412 (was in Batch sehr wohl funktioniert) ist doch völlig egal.
Grüße
rubberman
Hallo DomiZone1,
dann schreibe dir halt eine Subroutine die die Berechnung so ausführt, wie ich es oben angemerkt habe und anschließend das Komma per Stringmanipulation hinein editiert.
Sinn macht das trotzdem nicht, weil du nicht numerisch mit den erhaltenen Werten weiter arbeiten kannst. (Aber das hatte ich ja oben bereits geschrieben ...)
Grüße
rubberman
dann schreibe dir halt eine Subroutine die die Berechnung so ausführt, wie ich es oben angemerkt habe und anschließend das Komma per Stringmanipulation hinein editiert.
@echo off &setlocal
set /a "Y=500"
set /a "N=7"
call :toPercent 1000 %Y% pY
call :toPercent 1000 %N% pN
echo %pY% %%
echo %pN% %%
pause
exit /b
:toPercent
setlocal
set /a "prozentsatz=%~2 * 1000000 / %~1"
set "prozentsatz=000000%prozentsatz%"
set "prozentsatz=1%prozentsatz:~-7%"
set /a "vorkomma=%prozentsatz:~0,4% %% 1000"
endlocal &set "%~3=%vorkomma%,%prozentsatz:~-4%"
exit /b
:toPercent
wird mit dem Grundwert, dem Prozentwert und dem Variablenname für den Prozentsatz als Argumente gefüttert.Sinn macht das trotzdem nicht, weil du nicht numerisch mit den erhaltenen Werten weiter arbeiten kannst. (Aber das hatte ich ja oben bereits geschrieben ...)
Grüße
rubberman
Hallo DomiZone1.

Grüße
rubberman
Ihr Könnt auch vbs nehmen!
Diese Lösung hast du ja bereits bekommen ... leider geht mein batch Spiel sehr gerne ins minus (Fast immer)
Das ist immer so, wenn man versucht mit Batch Spiele zu entwickeln. Der Ausgang ist zu 99,999 % negativ @echo off &setlocal
set /a "Y=500"
set /a "N=-7"
call :toPercent 1000 %Y% pY
call :toPercent 1000 %N% pN
echo %pY% %%
echo %pN% %%
pause
exit /b
:toPercent
setlocal
set /a "prozentsatz=%~2 * 1000000 / %~1"
set "vorzeichen="
if %prozentsatz% lss 0 (
set "vorzeichen=-"
set /a "prozentsatz*=-1"
)
set "prozentsatz=000000%prozentsatz%"
set "prozentsatz=1%prozentsatz:~-7%"
set /a "vorkomma=%prozentsatz:~0,4% %% 1000"
endlocal &set "%~3=%vorzeichen%%vorkomma%,%prozentsatz:~-4%"
exit /b
Grüße
rubberman