julian57
Goto Top

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:
@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
ich hoffe ihr könnt mir sagen wie ich das mache das das mit den Kommastellen auch funktioniert.
mfg
Julian57

Content-ID: 153943

Url: https://administrator.de/forum/rechnen-in-batch-mit-kommastellen-153943.html

Ausgedruckt am: 27.12.2024 um 19:12 Uhr

Biber
Biber 28.10.2010, aktualisiert am 18.10.2012 um 18:43:55 Uhr
Goto Top
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
Julian57
Julian57 28.10.2010 um 21:19:15 Uhr
Goto Top
Hallo,
danke für deine schnelle Antwort, werde dann das ganze mit XProfan schreiben.So das es dann funktioniert
mfg
Julian57
bastla
bastla 28.10.2010 um 21:32:58 Uhr
Goto Top
@Biber
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 face-wink):
@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 nochmals nein: ich werde auch keine "Function" für die Dezimalanteilermittlung dazupappen ...

... und ein letztes Nein: VBS werde ich Julian57 auch nicht aufdrängen. face-wink

Grüße
bastla
Biber
Biber 28.10.2010 um 21:48:54 Uhr
Goto Top
[OT]
@bastla

Okay...jetzt Phase II

Jetzt dübeln wir den Pudding mit Hilfe eines GEMA-freien Klingeltons an...

Grüße
Biber
[/OT]
bastla
bastla 28.10.2010 um 22:02:01 Uhr
Goto Top
[OT]
@Biber
mit Hilfe eines GEMA-freien Klingeltons
Und sowas gibt's wirklich?

Übrigens - welchen Pudding? 0face-smile

Grüße
bastla
[/OT]
Biber
Biber 28.10.2010 um 22:11:21 Uhr
Goto Top
[OT]
Zitat von @bastla:
> mit Hilfe eines GEMA-freien Klingeltons
Und sowas gibt's wirklich?
Klar - alle Klingeltöne ohne musikalischen Bestandteile sind GEMA-frei.

Also in Zeiten von DSDS und Xavier N. fast alle...
[/OT]