이 예제는 잘 작동합니다:
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
.