awk에서 두 숫자를 비교하는 방법은 무엇입니까?

awk에서 두 숫자를 비교하는 방법은 무엇입니까?

이 예제는 잘 작동합니다:

awk -v num1=5999 -v num2=5999  'BEGIN{ print (num2==num1) ? "equal" : "not equal" }'
equal

이 예는 잘 작동하지 않습니다.

awk -v num1=59558711052462309110012 -v num2=59558711052462309110011 'BEGIN{ print (num2==num1) ? "equal" : "not equal" }'
equal

두 번째 예에서는 비교되는 숫자가 다릅니다. 왜 "같지 않음"이 인쇄되지 않습니까?

답변1

awk 숫자의 정밀도 한계에 도달했습니다.

비교를 문자열 비교로 강제할 수 있습니다.

awk -v num1=59558711052462309110012 -v num2=59558711052462309110011 '
  BEGIN{ print (num2""==num1) ? "equal" : "not equal" }'

(여기서 빈 문자열과 연결하면 숫자가 아닌 문자열로 처리됩니다.)

수치 비교를 수행하려면 bc또는 와 같은 임의의 정밀도 숫자를 처리할 수 있는 도구를 사용해야 합니다 python.

관련 정보