Неправильный вывод при сравнении чисел с плавающей точкой

Неправильный вывод при сравнении чисел с плавающей точкой

Я пытаюсь сравнить два числа с плавающей точкой в ​​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

Связанный контент