bc im shellscript, probleme mit rundung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
becke
Beiträge: 365
Registriert: 29.11.2004 11:55:04
Wohnort: Ostwestfalen

bc im shellscript, probleme mit rundung

Beitrag von becke » 28.04.2009 12:31:17

Hallo Allerseits,

ein vermutlich kleines Problem, auf dessen Lösung ich durch goggeln aber auch nicht komme.

Ich möchte in einem Script Berechnungen mit bc durchführen.
Ich habe Inputvariablen mit NK-Stellen, möchte damit rechnen und ein auf 0 NK-Stellen gerundetes Ergebnis in eine Shellvariable schreiben.
Testweise etwa so:

Code: Alles auswählen

$ var=$(echo "scale=0 ; 1.9*1.0;" | bc) && echo "var="$var
var=1.9
Leider ist das Ergebnis nicht 2 sondern 1.9.

Wie komme ich in $var auf des gerundete Ergebnis 2?

Gruß,
becke

Benutzeravatar
becke
Beiträge: 365
Registriert: 29.11.2004 11:55:04
Wohnort: Ostwestfalen

Re: bc im shellscript, probleme mit rundung

Beitrag von becke » 28.04.2009 12:50:08

Ok, hab's selber (würg):

Code: Alles auswählen

$ var=$(printf "%.0f" $(echo "scale=0 ; 1.9*1.0;" | bc | sed 's/\./,/' )) && echo "var="$var
var=2
Kennt jemand eine einfachere Lösung?

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: bc im shellscript, probleme mit rundung

Beitrag von GoKi » 28.04.2009 15:48:55

sowas?

Code: Alles auswählen

echo "scale=0 ; (1.9*1.0 + 0.5)/1;" | bc
Wenn deine Eingabe kleiner 0 ist, dann -0.5, kann man auch direkt in bc abfragen.
MfG GoKi
:wq

Antworten