Aufrunden float-point-zahlen bash
Ok, ich versuche also zu Runde bis eine Eingabe 17.92857
so dass es erhält einen input von 17.929
in der bash.
Mein code bisher ist:
read input
echo "scale = 3; $input" | bc -l
Jedoch, wenn ich diese, es nicht in der Runde, es gibt 17.928
.
Kennt jemand irgendwelche Lösungen dazu?
InformationsquelleAutor der Frage Quill | 2014-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Falle
input
eine Zahl enthält, gibt es keine Notwendigkeit für ein externes Kommando wiebc
. Sie können einfach verwenden Sieprintf
:Edit: Im Fall der Eingabe ist eine Formel, Sie sollten jedoch verwenden
bc
als in einen der folgenden Befehle:InformationsquelleAutor der Antwort Tim Zimmermann
Einem kleinen trick ist das hinzufügen von
0.0005
zu Ihrer Eingabe auf diese Weise haben Sie Ihre Zahl aufrunden richtig.InformationsquelleAutor der Antwort Ludovic Feltz
Schreiben Sie ein shell-Hilfsfunktion
round ${FLOAT} ${PRECISION}
:InformationsquelleAutor der Antwort Zane Hooper
wenn Sie erhalten die Fehler Runden mit der Anzahl 17.928 versuchen Sie dies:
Lesen y
v=
echo "scale = 3; $y" |bc -l
if [ $v == 17.928 ] ; then
echo "17.929"
sonst
echo $v
fi
InformationsquelleAutor der Antwort reyb