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에서 부동 소수점 숫자를 비교하려면 스택 오버플로에서 자세한 내용을 참조하세요.이것