>백엔드 개발 >파이썬 튜토리얼 >Python의 정수 나누기가 때때로 예상치 못한 반올림 결과를 생성하는 이유는 무엇입니까?

Python의 정수 나누기가 때때로 예상치 못한 반올림 결과를 생성하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-19 00:22:11780검색

Why Does Integer Division in Python Sometimes Produce Unexpected Rounded Results?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.