Python의 정수 나눗셈: 반올림된 결과의 미스터리 풀기
Python에서 나눗셈 연산은 때때로 예상치 못한 결과를 낳을 수 있습니다. 특히 피연산자의 경우 정수입니다. 이 동작을 이해하려면 Python 정수 나누기의 미묘한 차이를 파헤쳐야 합니다.
두 개의 정수를 나누면 결과도 정수가 됩니다. 이 동작은 연산이 수행되기 전에 피연산자가 잘리는 Python 2.x의 나누기 구현에서 발생합니다. 예를 들어 보겠습니다.
>>> (20-10) / (100-10) 0
여기서 피연산자는 각각 10과 90으로 평가됩니다. 둘 다 정수이므로 결과도 0으로 잘립니다. 이는 Python 2.x의 나누기 연산자(/)가 항상 정수가 되기 때문입니다.
이 문제를 해결하려면 다음과 같이 부동 소수점 나누기를 적용할 수 있습니다. 피연산자 중 하나를 float로 캐스팅합니다:
>>> (20-10) / float((100-10)) 0.1111111111111111
또는 다음에서 나누기 모듈을 가져올 수 있습니다. __future__:
>>> from __future__ import division >>> (10 - 20) / (100 - 10) -0.1111111111111111
이렇게 하면 피연산자 유형에 관계없이 나누기가 항상 부동 소수점을 반환하도록 보장합니다. 이러한 미묘함을 이해하면 Python 코드에서 예상치 못한 반올림 오류를 방지할 수 있습니다.
위 내용은 Python의 정수 나누기가 때때로 예상치 못한 반올림 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!