118551
Nov 08, 2014, updated at Nov 10, 2014 (UTC)
2957
8
0
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 254272
Url: https://administrator.de/contentid/254272
Printed on: April 24, 2024 at 16:04 o'clock
8 Comments
Latest comment
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