부동소수점 비교 시 잘못된 출력

부동소수점 비교 시 잘못된 출력

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

관련 정보