im bash-script: dezimalzahl in integerzahl umwandeln

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
padarasa
Beiträge: 281
Registriert: 11.12.2004 13:17:10
Wohnort: Friedberg (Hessen)

im bash-script: dezimalzahl in integerzahl umwandeln

Beitrag von padarasa » 24.07.2005 14:36:24

Hi,

ich habe eine Variable zahl die den Inhalt z.B. 78.94 hat. Ich bräuchte aber die Zahl vor dem Punkt. Also entweder runden oder einfach abschneiden... es gibt doch bestimmt 'ne einfache Lösung, die ich übersehen habe?

Benutzeravatar
Silke
Beiträge: 559
Registriert: 17.05.2005 15:58:20
Wohnort: Hannover
Kontaktdaten:

Beitrag von Silke » 24.07.2005 16:07:12

Moin,

bash kann keine Fliesskomma-Arithmetik. Wenn dir Abschneiden reicht, geht aber sowas:

Code: Alles auswählen

res=$(echo "scale=0;$var/1" | bc)
[edit]Und jetzt weiss ich auch wieder, wie ich frueher "von Hand" gerundet hab:

Code: Alles auswählen

tmp1=$(echo "$var*100" | bc)
tmp2=$(echo "$tmp1%100" | bc)
res=$(echo "($tmp1+$tmp2)/100" | bc)
[/edit]

Gruss,
- Silke -
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.
- Kurt Tucholsky -

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 24.07.2005 17:02:44

Runden geht auch so:

Code: Alles auswählen

res=$(echo "scale=0;($var+0.5)/1"|bc)

Benutzeravatar
Silke
Beiträge: 559
Registriert: 17.05.2005 15:58:20
Wohnort: Hannover
Kontaktdaten:

Beitrag von Silke » 24.07.2005 17:53:15

Das war jetzt zu einfach - klar :mrgreen:
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.
- Kurt Tucholsky -

Antworten