Hallo, ich möchte in einem sh-script einen Prozentwert aus zwei Zahlen berechnen.
VOLL=70200
VERBLEIBEND=25620
expr $VERBLEIBEND / $VOLL \* 100
Wieso bekomme ich bei $VERBLEIBEND / $VOLL 0 raus obwohl doch 0,36 rauskommen sollte?
Danke
Anmeldungsdatum: Beiträge: 184 |
Hallo, ich möchte in einem sh-script einen Prozentwert aus zwei Zahlen berechnen. VOLL=70200 expr $VERBLEIBEND / $VOLL \* 100 Wieso bekomme ich bei $VERBLEIBEND / $VOLL 0 raus obwohl doch 0,36 rauskommen sollte? Danke |
Anmeldungsdatum: Beiträge: 210 |
Hallo ensacom, in der Shell kannst Du lediglich einfache (ganzzahlige) Berechnungen durchführen. Für Fließkomma-Werte benötigst Du den Umweg über "bc": echo $(echo "scale=2 ; (25620/70200)*100" | bc) MrDoubtfire |
(Themenstarter)
Anmeldungsdatum: Beiträge: 184 |
Vielen Dank, kannst du mir auch sagen wieso hinter dem Komma immer 0 rauskommt? Wie macht man das und wo bekomme ich überhaupt Informationen zu diesen ganzen Befehlen und der Syntax? |
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4694 Wohnort: Berlin |
Hinter dem Komma kommt da immer 0 heraus, weil das scale=2 bewirkt, das mit nur zwei Nachkommastellen gerechnet wird. Wenn Dich die Nachkommastellen nicht interessieren kannst Du auch ohne bc mit ganzen Zahlen rechnen, in dem Du die Formel umstellst und erst mit 100 multiplizierst. VOLL=70200 VERBLEIBEND=25620 echo $(($VERBLEIBEND * 100 / $VOLL)) Die Informationen gibt's in der Doku zu den einzelnen Programmen. Zum Beispiel in den man-pages. |
![]() Anmeldungsdatum: Beiträge: 17623 Wohnort: Berlin |
...und in der $((...)) - Klammerung können die Dollars weggelassen werden: echo $((VERBLEIBEND * 100 / VOLL))
|
![]() Anmeldungsdatum: Beiträge: 2130 Wohnort: Residenz des Rechts |
user unknown hat geschrieben:
[url=http://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic]man bash[/url] hat geschrieben:
Das macht die ganze Sache natürlich besser lesbar. Allerdings wird einem das "$" nicht erspart bleiben, wenn man $0,$1,... referenzieren will. |