Rechnen in Batch mit Kommastellen
Hallo allemiteinander
ich hab mir heute einen Batch geschrieben der mir zunächst aus dem Durchmesser eines Rades den Umfang ausrechnet und anschließend die Umdrehunganzahl des Rades von x cm ausrechnet. Wobei man x selber definieren muss
Leider funktioniert das mit Kommastellen noch nicht d.h. es funktioniert zu Beispiel nicht wenn ich den Umfang ausrechen will mittels Pi
also
set /a umfang=%durchmesser%*3.14
er gibt mir dann immer umfang=0 aus was verständlich ist weil er das Komma nicht nimmt.
hier erst mal mein Programm:
ich hoffe ihr könnt mir sagen wie ich das mache das das mit den Kommastellen auch funktioniert.
mfg
Julian57
ich hab mir heute einen Batch geschrieben der mir zunächst aus dem Durchmesser eines Rades den Umfang ausrechnet und anschließend die Umdrehunganzahl des Rades von x cm ausrechnet. Wobei man x selber definieren muss
Leider funktioniert das mit Kommastellen noch nicht d.h. es funktioniert zu Beispiel nicht wenn ich den Umfang ausrechen will mittels Pi
also
set /a umfang=%durchmesser%*3.14
er gibt mir dann immer umfang=0 aus was verständlich ist weil er das Komma nicht nimmt.
hier erst mal mein Programm:
@echo off
FOR /f %%f IN (Durchmesser.txt) DO @set durchmesser=%%f
echo Geben sie der Strecke einen Namen
set /p name=
cls
echo Geben sie die Laenge der Strecke in cm an
set /p cm=
cls
set /a umfang=%durchmesser% * 3 // 3 soll zu Pi werden also 3.14
If %cm% GTR %umfang% (set /a um=%cm% / %umfang%) //hier sollen auch Kommastellen genommen werden
If %cm% LSS %umfang% (set /a um=%umfang% / %cm%) //hier sollen auch Kommastellen genommen werden
set /a grad=%um% * 360
echo Laenge Strecke(%name%)
echo ---------------------------
echo Centimeter Umdrehungen Grad
echo ---------------------------
echo %cm% %um% %grad% //im Ergebnis sollten dann auch Kommastellen möglich sein
echo ---------------------------
echo.
echo Die Strecke %name% ist %cm%cm lang.Das sind %um%Umdrehungen mit einem Rad mit einen Durchmesser von %durchmesser%cm und einen Umfang von %umfang%cm. Die %um%Umdrehungen sind umgerechnet also %grad%Grad >> Strecke.txt
echo -------------------------------------------------------------------------- >> Strecke.txt
echo Druecken sie eine beliebige Taste um das Programm zu beenden...
pause > nul
exit
mfg
Julian57
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 153943
Url: https://administrator.de/contentid/153943
Ausgedruckt am: 26.11.2024 um 21:11 Uhr
6 Kommentare
Neuester Kommentar
Moin Julian57,
Rechnen im Batch mit Nachkommastellen geht eigentlich nicht.
In dem Beitrag Batch - Dividieren ? (mit kommastelle) haben wir schon mal etwas ausführlicher darüber meditiert.
Du kannst zwar die dort skizzierten Behelfslösungen ausprobieren, aber Aufgabe und Werkzeug passen nicht zusammen
(-> Dübel und Hammer).
Grüße
Biber
Rechnen im Batch mit Nachkommastellen geht eigentlich nicht.
In dem Beitrag Batch - Dividieren ? (mit kommastelle) haben wir schon mal etwas ausführlicher darüber meditiert.
Du kannst zwar die dort skizzierten Behelfslösungen ausprobieren, aber Aufgabe und Werkzeug passen nicht zusammen
(-> Dübel und Hammer).
Grüße
Biber
@Biber
... und nochmals nein: ich werde auch keine "Function" für die Dezimalanteilermittlung dazupappen ...
... und ein letztes Nein: VBS werde ich Julian57 auch nicht aufdrängen.
Grüße
bastla
Aufgabe und Werkzeug passen nicht zusammen
Yep - daher habe ich (zur Abschreckung) mal was gedübelt (und nein, die generelle Abrundung stört mich nicht wirklich ):@echo off & setlocal
FOR /f %%f IN (Durchmesser.txt) DO @set durchmesser=%%f
echo Geben sie der Strecke einen Namen
set /p name=
echo\
echo Geben sie die Laenge der Strecke in cm an
set /p cm=
echo\
rem Umfang um Faktor 100 erhöht berechnen
set /a umfang00=durchmesser*314
rem ganzzahligen Umfang ermitteln
set /a umfang=umfang00/100
rem Dezimalstellen ermitteln
set /a umfangDez=umfang00%%100
set /a umfangDez+=100
set umfangDez=%umfangDez:~1%
rem Strecke um Faktor 100 erhöhen
set /a cm00=cm*100
If %cm00% LSS %umfang00% goto :Kleiner
rem ganzzahlige Umdrehungsanzahl ermitteln
set /a um=cm00/umfang00
rem Dezimalstellen der Umdrehungsanzahl
set /a umDez=%cm00%00/umfang00%%100
set /a umDez+=100
set umDez=%umDez:~1%
rem ganzzahligen Grad-Wert
set /a grad=cm00*360/umfang00
rem Dezimalstellen Grad
set /a gradDez=%cm00%00*360/umfang00%%100
set /a gradDez+=100
set gradDez=%gradDez:~1%
goto :Ausgabe
:Kleiner
rem ganzzahlige Umdrehungsanzahl ist 0
set /a um=0
rem Dezimalstellen der Umdrehungsanzahl
set /a umDez=%cm00%00/umfang00%%100
set /a umDez+=100
set umDez=%umDez:~1%
rem ganzzahligen Grad-Wert
set /a grad=cm00*360/umfang00
rem Dezimalstellen Grad
set /a gradDez=%cm00%00*360/umfang00%%100
set /a gradDez+=100
set gradDez=%gradDez:~1%
:Ausgabe
echo Laenge Strecke(%name%)
echo ---------------------------
echo Centimeter Umdrehungen Grad
echo ---------------------------
echo %cm% %um%,%umDez% %grad%,%gradDez%
echo ---------------------------
echo.
echo Die Strecke %name% ist %cm% cm lang.Das sind %um%,%umDez% Umdrehungen mit einem Rad mit einem Durchmesser von %durchmesser% cm und einen Umfang von %umfang%,%umfangDez% cm. Die %um%,%umDez% Umdrehungen sind umgerechnet also %grad%,%gradDez% Grad>>Strecke.txt
echo -------------------------------------------------------------------------->>Strecke.txt
echo Druecken sie eine beliebige Taste um das Programm zu beenden...
pause>nul
... und ein letztes Nein: VBS werde ich Julian57 auch nicht aufdrängen.
Grüße
bastla
[OT]
@bastla
Okay...jetzt Phase II
Jetzt dübeln wir den Pudding mit Hilfe eines GEMA-freien Klingeltons an...
Grüße
Biber
[/OT]
@bastla
Okay...jetzt Phase II
Jetzt dübeln wir den Pudding mit Hilfe eines GEMA-freien Klingeltons an...
Grüße
Biber
[/OT]
[OT]
@Biber
Übrigens - welchen Pudding? 0
Grüße
bastla
[/OT]
@Biber
mit Hilfe eines GEMA-freien Klingeltons
Und sowas gibt's wirklich?Übrigens - welchen Pudding? 0
Grüße
bastla
[/OT]
[OT]
Klar - alle Klingeltöne ohne musikalischen Bestandteile sind GEMA-frei.
Also in Zeiten von DSDS und Xavier N. fast alle...
[/OT]
Klar - alle Klingeltöne ohne musikalischen Bestandteile sind GEMA-frei.
Also in Zeiten von DSDS und Xavier N. fast alle...
[/OT]