나는 두 개의 정수 값을 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
에서 강력 하지만 함수 호출이기 때문에 속도가 느릴 수 있습니다.operator
operator.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