Falsche Ausgabe beim Vergleichen von Floats

Falsche Ausgabe beim Vergleichen von Floats

Ich versuche, zwei Floats in Bash zu vergleichen, und etwas läuft schief. Hier ist das Codebeispiel basierend auf der LösungHier

num1=0.502E-01
num2=0.01
echo $num1'>'$num2 | bc -l
echo $num2'>'$num1 | bc -l

Ich erwarte die Ausgabe 1für das erste Echo und 0für das zweite Echo, aber stattdessen bekomme ich 0für das erste und 1für das zweite. Was ist falsch an dieser Eingabe? Wie kann man diese Floats konsistent vergleichen?

Antwort1

awkkönnen sicherlich Float-Vergleiche durchführen, wenn sie von Ihrem Shell-Skript aufgerufen werden.

num1=0.502E-01
num2=0.01
awk -v a="$num1" -v b="$num2" 'BEGIN{print(a>b)}'
1
awk -v a="$num1" -v b="$num2" 'BEGIN{print(b>a)}'
0

verwandte Informationen