Bash에서 두 개의 부동소수점 숫자를 비교하려고 하는데 문제가 발생했습니다. 다음은 솔루션을 기반으로 한 코드 예제입니다.여기
num1=0.502E-01
num2=0.01
echo $num1'>'$num2 | bc -l
echo $num2'>'$num1 | bc -l
1
첫 번째 에코와 두 번째 에코의 출력을 기대했지만 0
얻은 것은 0
첫 번째와 1
두 번째 에코였습니다. 이 입력에 문제가 있나요? 이러한 부동 소수점 숫자를 일관되게 비교하려면 어떻게 해야 합니까?
답변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