그림에 표시된 것처럼 Python2.7이 eval을 사용하여 부동 소수점 표현식을 계산할 때,
으아악
온라인에서 답변을 찾을 수 없어서 매우 혼란스럽습니다. 안내해 주세요.
업데이트:
또 다른 질문이 있습니다.
a=0.3-0.1, print(a) 출력 0.19999999999999998; b=0.2,
print('%s==%s'%(a,b)) 출력 0.2 ==0.2,
문자열 형식을 지정할 때 0.19999999999999998에서 0.2로 변경되는 이유는 무엇입니까?
일반적으로 컴퓨터에서 직접 사용할 수 없습니다.
==
두 개의 부동 소수점 숫자가 같은지 비교하세요.부동소수점 값은 컴퓨터에서 오류가 있기 때문이죠.
Python에는 고정밀 부동 소수점 계산을 위한
decimal
和fraction
2개의 모듈이 있습니다.예
으아악이것은 eval과 관련이 없으며 주로 정확성의 문제입니다. 이는 모든 프로그래밍 언어에서 발생합니다. 0.3-0.1 == 0.2를 시도하면 Baidu JavaScript 0.2-0.1 문제가 직접 반환됩니다. 그런 다음 "컴퓨터 구성의 원리" 》초기 데이터 표현을 살펴보세요.
https://stackoverflow.com/que... 이것은 많은 투표를 받은 답변입니다.
으아악