Python과 Bash는 숫자를 비교합니다.

Python과 Bash는 숫자를 비교합니다.

Bash에서 다음 명령을 실행하면 정답을 얻습니다.

# if [ 2.0000000000000000000000000001 > 2 ] ; then echo " True "; else echo " False " ; fi
 True
#

하지만 Python IDLE에서 실행하는 경우

>>> if 2.00000000000000001 > 2.0:
    print "true"
else:
    print "false"


false
>>> 

파이썬은 숫자를 비교할 수 없잖아요?

나는 이미 답을 갖고 있다고 생각한다. Python은 부동 소수점 숫자를 표현하기 위해 10자리 숫자만 사용합니다.

>>> c=2.00000000001232
>>> print c
2.00000000001
>>> d= 2.00000000003234
>>> print d
2.00000000003
>>> e=2.000000000049
>>> print e
2.00000000005
>>>

매우 감사합니다.

답변1

bash에서 숫자를 성공적으로 비교하지 못했습니다. "bash"(명령 test)가 문자열 길이를 성공적으로 테스트 2.0000000000000000000000000001하고 존재하지 않는 출력을 이라는 파일로 리디렉션했다는 것만 테스트했습니다 2.

-gt다음을 제외한 연산자가 필요합니다 .

[ 2.0000000000000000000000000001 -gt 2 ] && echo yes

-bash: [: 2.00000000000000000000000000001: 예상되는 정수 표현식

그렇게 생각 할수 있겠지:

[[ 2.0000000000000000000000000001 > 2 ]] && echo yes

그리고 얻다:

이 시점에서 정수를 비교하지 않는 한 문자열을 정렬하는 것입니다.

[[ 9 > 11 ]] && echo yes

Python에서 부동 소수점 숫자를 비교하려면 스택 오버플로에서 자세한 내용을 참조하세요.이것

관련 정보