[python] 정수의 최대 값 및 최소값
파이썬에서 정수의 최소값과 최대 값을 찾고 있습니다. 예를 들어., 자바, 우리가 Integer.MIN_VALUE
하고 Integer.MAX_VALUE
. 파이썬에서 이와 같은 것이 있습니까?
답변
파이썬 3
파이썬 3에서는이 질문이 적용되지 않습니다. 일반 int
유형은 제한이 없습니다.
그러나 실제로 현재 통역사의 단어 크기 에 대한 정보를 찾고 있을 수 있습니다. 대부분의 경우 기계의 단어 크기와 같습니다. 이 정보는 Python 3에서 여전히 사용할 수 있으며 sys.maxsize
이는 부호있는 단어로 표현할 수있는 최대 값입니다. 마찬가지로, 가능한 가장 큰 목록 또는 인 메모리 시퀀스 의 크기입니다 .
일반적으로 부호없는 단어로 표시 할 수있는 최대 값은 sys.maxsize * 2 + 1
이고 단어의 비트 수는입니다 math.log2(sys.maxsize * 2 + 2)
. 자세한 내용은 이 답변 을 참조하십시오.
파이썬 2
Python 2에서 일반 int
값 의 최대 값은 다음과 sys.maxint
같습니다.
>>> sys.maxint
9223372036854775807
여기에-sys.maxint - 1
표시된대로 최소값을 계산할 수 있습니다 .
이 값을 초과하면 Python은 일반 정수에서 긴 정수로 완벽하게 전환됩니다. 따라서 대부분의 경우 알 필요가 없습니다.
답변
다른 모든 것보다 큰 숫자가 필요하면
float('inf')
비슷한 방식으로 다른 모든 것보다 작은 숫자 :
float('-inf')
이것은 파이썬 2와 3 모두에서 작동합니다.
답변
sys.maxint
상수는 이후 대신 사용 파이썬 3.0에서 제거되었습니다 sys.maxsize
.
정수
- PEP 237 : 기본적으로 긴 이름이 int로 바뀌 었습니다. 즉, int라는 하나의 내장 정수 유형 만 있습니다. 그러나 그것은 주로 오래 된 긴 유형처럼 행동합니다.
- PEP 238 : 1/2와 같은 표현식은 부동 소수점을 반환합니다. 절단 동작을 얻으려면 1/2을 사용하십시오. (후자의 구문은 적어도 Python 2.2 이후 수년간 존재했습니다.)
- 더 이상 정수 값에 대한 제한이 없으므로 sys.maxint 상수가 제거되었습니다. 그러나 sys.maxsize는 실제 목록 또는 문자열 인덱스보다 큰 정수로 사용할 수 있습니다. 구현의 “자연적인”정수 크기를 따르며 일반적으로 동일한 빌드 옵션에서 동일한 플랫폼의 이전 릴리스에서 sys.maxint와 동일합니다.
- 긴 정수의 repr ()은 더 이상 후행 L을 포함하지 않으므로 해당 문자를 무조건 제거하는 코드는 대신 마지막 숫자를 잘라냅니다. 대신에 str ()을 사용하십시오.
- 8 진 리터럴은 더 이상 0720 형식이 아닙니다. 대신 0o720을 사용하십시오.
참조 : https://docs.python.org/3/whatsnew/3.0.html#integers
답변
파이썬에서는 정수가 플랫폼에 따라 2 31-1 또는 2 63-1 인 값을 전달하면 고정 크기 int
표현에서 가변 폭 long
표현 으로 자동 전환 됩니다. 통지 여기에 추가 가도록를 :sys.maxint
L
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
로부터 파이썬 설명서 :
숫자는 숫자 리터럴 또는 내장 함수 및 연산자의 결과로 생성됩니다. 표시되지 않은 정수 리터럴 (2 진, 16 진 및 8 진수 포함)은 표시하는 값이 너무 커서 일반 정수로 표현할 수없는 경우 일반 정수를 생성합니다.이 경우 긴 정수를 생성합니다.
'L'
또는'l'
접미사 가있는 정수 리터럴은 긴 정수를 생성합니다 ( 11보다 너무 많이 보이기'L'
때문에 선호됩니다1l
).
파이썬은 정수가 수학적인 정수이며 끝이 없다고 가장 열심히 노력합니다. 예를 들어, googol 을 쉽게 계산할 수 있습니다.
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
답변
파이썬 3의 경우
import sys
max = sys.maxsize
min = -sys.maxsize - 1
답변
다음과 같이 ‘inf’를 사용할 수 있습니다.
import math
bool_true = 0 < math.inf
bool_false = 0 < -math.inf
참조 : math — 수학 함수
답변
배열 또는 목록 인덱스의 최대 값 ( size_t
C / C ++ 과 동일)을 원하면 numpy를 사용할 수 있습니다.
np.iinfo(np.intp).max
이것은와 동일 sys.maxsize
장점은 바로 이것에 대한 수입에서 sys 필요가 없다는 것입니다 그러나.
머신에서 native int에 대해 max를 원한다면 :
np.iinfo(np.intc).max
doc 에서 사용 가능한 다른 유형을 볼 수 있습니다 .
플로트의 경우을 사용할 수도 있습니다 sys.float_info.max
.