문제

Python 2.6에서 Python 2.4 및 2.5로 프로젝트를 배출하고 있습니다. 내 프로젝트에서 나는 사용했다 float("inf"), 그리고 이제 Python 2.5에서는 사용할 수 없다는 것을 알았습니다. 그것의 백포트가 있습니까?

도움이 되었습니까?

해결책 4

Python 2.5+에서 테스트 된 백포트를 만들었으며 아마도 Python 2.4에서 쉽게 작업 할 수 있습니다.

https://github.com/cool-rr/garlicsim/blob/master/garlicsim/garlicsim/general_misc/infinity.py

다른 팁

먼 길이나 짧은 방법으로 철자가 나에게 잘 작동합니다.

$ python2.4 -c "print float('inf')+200"
inf
$ python2.5 -c "print float('inf')+200"
inf
$ python2.5 -c "print float('infinity')+200"
inf
$ python2.4 -c "print float('infinity')+200"
inf

그만큼 -c 플래그는 "다음 인수를 파이썬 명령으로 실행"을 의미합니다.

PEP754 (거부 됨) 특별 IEEE-754 값에 대한 귀하의 문제를 언급합니다. 그것은 같은 것을 사용하는 것을 제안합니다 1e300000 플로팅 포인트 오버플로를 생성하고 생성합니다 inf, 그러나 이것은 추악하고 휴대용이라는 보장되지 않는다는 점에 주목합니다.

파이썬에 대신 충분히 큰 부동물 지점을 일정하게 제공함으로써 그것을 가짜로 만들 수 있어야합니다. 예를 들어:

>>> 1e100000
inf
>>> float('inf') == 1e1000000
True
>>> float('inf') == 2e1000000
True

그만큼 소수 모듈은 Python 2.4 이후에 사용할 수 있으며 양수 또는 음의 무한 소수를 지원합니다. 그것은 항상 부유물처럼 행동하는 것은 아니지만 (예 : 소수점과 플로트를 추가하는 것은 지원되지 않습니다) 비교를 위해 올바른 일을합니다. 이는 나에게 충분했습니다.

>>> decimal.Decimal('Infinity') > 1e300
True

몇 줄로 Numpy를 빌리기 :

import numpy as np

inf = float(np.inf)

여기, inf a 일반 파이썬 float, 당신은 더 이상 Numpy를 귀찮게 할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top