[python] 나눗셈을 부동 소수점으로 강제하려면 어떻게해야합니까? 나누기가 계속 0으로 내림합니까?

나는 두 개의 정수 값을 a하고 b,하지만 난 부동 소수점에서의 비율이 필요합니다. 나는 그것을 알고 a < b계산하고 싶습니다 a / b. 따라서 정수 나누기를 사용하면 항상 나머지로 0을 얻습니다 a.

c파이썬에서 강제 로 부동 소수점 숫자가되도록하려면 어떻게해야합니까?

c = a / b



답변

Python 2에서 두 정수를 나누면 정수가 생성됩니다. 파이썬 3에서는 float를 생성합니다. 에서 가져 와서 새로운 동작을 얻을 수 있습니다 __future__.

>>> from __future__ import division
>>> a = 4
>>> b = 6
>>> c = a / b
>>> c
0.66666666666666663


답변

을 수행하여 플로팅 할 수 있습니다 c = a / float(b). 분자 또는 분모가 실수이면 결과도 나타납니다.


주의 사항 : 주석 작성자가 지적했듯이 b정수 또는 부동 소수점 숫자 (또는 숫자를 나타내는 문자열) 이외의 다른 경우에는 작동하지 않습니다 . 다른 유형 (예 : 복소수)을 다루는 경우 해당 유형을 확인하거나 다른 방법을 사용해야합니다.


답변

파이썬에서 나누기를 강제로 부동 소수점으로 만들려면 어떻게해야합니까?

두 개의 정수 값 a와 b가 있지만 부동 소수점에 비율이 필요합니다. 나는 a <b를 알고 a / b를 계산하고 싶습니다. 따라서 정수 나누기를 사용하면 항상 나머지 a와 함께 0을 얻습니다.

파이썬에서 c를 강제로 부동 소수점 숫자로 만들려면 어떻게해야합니까?

c = a / b

실제로 여기에서 묻는 것은 다음과 같습니다.

a / b분수를 반환하는 진정한 나눗셈을 어떻게 강제 합니까?”

파이썬 3으로 업그레이드

파이썬 3에서 진정한 나눗셈을하려면 간단히하세요 a / b.

>>> 1/2
0.5

정수에 대한 고전적인 분할 동작 인 바닥 분할은 a // b다음과 같습니다.

>>> 1//2
0
>>> 1//2.0
0.0

그러나 Python 2를 사용하거나 2와 3에서 모두 작동해야하는 코드를 작성하고있을 수 있습니다.

파이썬 2를 사용하는 경우

파이썬 2에서는 그렇게 간단하지 않습니다. 고전적인 Python 2 부서를 다루는 몇 가지 방법이 다른 방법보다 낫고 강력합니다.

Python 2에 대한 권장 사항

맨 위에 다음 가져 오기를 사용하여 주어진 모듈에서 Python 3 나누기 동작을 얻을 수 있습니다.

from __future__ import division

그런 다음 Python 3 스타일 나누기를 전체 모듈에 적용합니다. 주어진 시점에서 파이썬 쉘에서도 작동합니다. 파이썬 2에서 :

>>> from __future__ import division
>>> 1/2
0.5
>>> 1//2
0
>>> 1//2.0
0.0

이것은 모듈의 코드가 Python 3과 더 호환되도록하기 때문에 실제로 가장 좋은 솔루션입니다.

Python 2의 다른 옵션

이것을 전체 모듈에 적용하지 않으려면 몇 가지 해결 방법으로 제한됩니다. 가장 인기있는 것은 피연산자 중 하나를 플로트로 강제하는 것입니다. 하나의 강력한 솔루션은 a / (b * 1.0)입니다. 신선한 파이썬 쉘에서 :

>>> 1/(2 * 1.0)
0.5

또한 모듈 truediv에서 강력 하지만 함수 호출이기 때문에 속도가 느릴 수 있습니다.operatoroperator.truediv(a, b)

>>> from operator import truediv
>>> truediv(1, 2)
0.5

Python 2에는 권장되지 않습니다

일반적으로 볼 수 있습니다 a / float(b). b가 복소수 인 경우 TypeError가 발생합니다. 복소수를 갖는 나눗셈이 정의되었으므로 제수의 복소수를 통과했을 때 나눗셈에 실패하지 않는 것이 좋습니다.

>>> 1 / float(2)
0.5
>>> 1 / float(2j)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't convert complex to float

의도적으로 코드를 취하기 쉽게 만드는 것은별로 의미가 없습니다.

-Qnew플래그를 사용하여 Python을 실행할 수도 있지만 이것은 새로운 Python 3 동작으로 모든 모듈을 실행하는 단점이 있으며 일부 모듈은 고전적인 분할을 기대할 수 있으므로 테스트를 제외하고는 권장하지 않습니다. 그러나 입증하기 위해 :

$ python -Qnew -c 'print 1/2'
0.5
$ python -Qnew -c 'print 1/2j'
-0.5j


답변

c = a / (b * 1.0)


답변

Python 3.x에서 단일 슬래시 ( /)는 항상 참 (비 절단) 나누기를 의미합니다. (이 //연산자는 나누기를 자르는 데 사용됩니다.) Python 2.x (2.2 이상)에서는

from __future__ import division

모듈 상단에


답변

부동 소수점 형식으로 나누기 위해 매개 변수를 만들면 출력이 부동 소수점으로 생성됩니다.

예:

>>> 4.0/3
1.3333333333333333

또는,

>>> 4 / 3.0
1.3333333333333333

또는,

>>> 4 / float(3)
1.3333333333333333

또는,

>>> float(4) / 3
1.3333333333333333


답변

.부동 소수점 숫자를 나타 내기 위해 점 ( )을 추가하십시오

>>> 4/3.
1.3333333333333333