Я пытаюсь сравнить два числа с плавающей точкой в bash, и что-то идет не так. Вот пример кода, основанный на решенииздесь
num1=0.502E-01
num2=0.01
echo $num1'>'$num2 | bc -l
echo $num2'>'$num1 | bc -l
Я ожидаю вывод 1
для первого эха и 0
для второго эха, но вместо этого получаю 0
для первого и 1
для второго. Что не так с этим вводом? Как получить согласованное сравнение этих float?
решение1
awk
безусловно, может выполнять сравнения с плавающей точкой, если вызывается из вашего скрипта оболочки.
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