[gelöst] bash script mit variablen rechnen (runden)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

[gelöst] bash script mit variablen rechnen (runden)

Beitrag von joe2017 » 29.11.2019 15:43:49

Hallo zusammen,

ich bin echt am verzweifeln! Ich versuche zwei variablen von einander abzuziehen. Jedoch wird das Ergebnis standardmäßig abgerundet.
Ich hab zwar herausgefunden wie ich auf die Nachkommastelle runden kann. Jedoch nicht wie ich ganz zahlig runde.

Code: Alles auswählen

var1=7
var2=4
var3=$(( $var1 / $var2 ))  #Ergebnis = 1,75
echo $var3 # Anzeige = 1

var3=`echo "scale=1; $var1 / $var2" | bc`
echo $var3 # Anzeige = 1,7
Eigentlich möchte ich als Ergebnis 2 erhalten, da die 1,75 auf die ganze Zahl aufgerundet werden soll.
Wahrscheinlich sehe ich vor lauter Bäumen den Wald nicht!? :facepalm:
Zuletzt geändert von joe2017 am 02.12.2019 11:36:46, insgesamt 2-mal geändert.

TomL

Re: bash script mit variablen rechnen (runden)

Beitrag von TomL » 29.11.2019 16:16:25

Code: Alles auswählen

$  var1=7; var2=4; var3=$((((($var1*100) / $var2)+50)/100)); echo $var3
2

$ var1=49; var2=4; var3=$((((($var1*100) / $var2)+50)/100)); echo $var3
12

$ var1=50; var2=4; var3=$((((($var1*100) / $var2)+50)/100)); echo $var3
13

$ var1=51; var2=4; var3=$((((($var1*100) / $var2)+50)/100)); echo $var3
13

tobo
Beiträge: 1993
Registriert: 10.12.2008 10:51:41

Re: bash script mit variablen rechnen (runden)

Beitrag von tobo » 29.11.2019 16:22:07

Die bash kann nur Ganzzahlarithmetik und bc rundet nicht, sondern schneidet bei scale ab. printf könnte man benutzen:

Code: Alles auswählen

printf "%.f\n" $(echo "$var1/$var2" | bc -l)

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: bash script mit variablen rechnen (runden)

Beitrag von joe2017 » 29.11.2019 16:47:03

Super!

Ich werde das heute Abend gleich noch testen. Vielen Dank für die Info.

Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: bash script mit variablen rechnen (runden)

Beitrag von Tintom » 29.11.2019 18:20:39

Für sowas habe ich Debianconcalc schätzen gelernt.

Benutzeravatar
heisenberg
Beiträge: 3559
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: bash script mit variablen rechnen (runden)

Beitrag von heisenberg » 29.11.2019 20:45:33

Zum Thema "Rechnen mit Kommazahlen in der Bash geht nicht - wie kann ich es trotzdem tun?" gibt's diese ausführliche Liste mit Empfehlungen bei Stackexchange(englisch):

https://unix.stackexchange.com/question ... 0787#40787

Den hier finde ich nett:

Code: Alles auswählen

printf %.10f\\n "$((10**9 * 20/7  ))e-9"
2.8571428570
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Antworten