긴 정수의 최대 값


108

긴 정수의 최대 값을 예를 들어 C ++의 LONG_MAX.


7
파이썬 정수가 전혀 제한되어 있는지 잘 모르겠습니다. sys.maxint를 교차하는 순간 내부 표현이 int에서 long으로 변경되어 무제한 표현이 가능합니다.
tchap

내가 물었다 내가 값의 그룹 중 최소 값을 찾을 필요가 있기 때문에 하나 하나 그래서 일단 내가 다른 사람과 비교할 수 있도록 변수에 큰 값을 저장해야
Sreevisakh

2
귀하의 의견에-내장 기능 min을 사용하는 것이 좋습니다.
지리산

5
C ++ 또는 다른 언어로 프로그래밍하는 경우에도 최소값을 찾으려고하는 경우 최대 값이 필요하지 않습니다. 어쨌든 모든 요소를 ​​반복하려면 첫 번째 요소를 시작 값으로 사용하십시오. (하지만 min정말로 파이썬으로 프로그래밍하고 싶다면 함수 를 사용하는 것이 더 좋습니다 !)
John Y

3
@Sreevisakh : "큰 값"의 경우 무한대, float("inf"). 또는 내장 min기능을 사용하는 것이 좋습니다 .
Fred Foo

답변:


132

긴 정수 :

명시 적으로 정의 된 제한이 없습니다. 사용 가능한 주소 공간의 양은 실질적인 한계를 형성합니다.
( 사이트 에서 발췌). 당신이 그것을 볼 수있는 숫자 유형 에 대한 문서를 참조하십시오 Long integers have unlimited precision. Python 2에서 Integer는 제한을 초과하여 증가하면 자동으로 long으로 전환됩니다.

>>> import sys
>>> type(sys.maxsize)
<type 'int'>
>>> type(sys.maxsize+1)
<type 'long'>


정수의 경우

maxint 및 maxsize :

int의 최대 값은 Python 2.x에서 sys.maxint. Python 3에서 제거되었지만 sys.maxsize종종 대신 사용할 수 있습니다. 에서 변경 로그 :

더 이상 정수 값에 제한이 없으므로 sys.maxint 상수가 제거되었습니다. 그러나 sys.maxsize는 실제 목록이나 문자열 인덱스보다 큰 정수로 사용할 수 있습니다. 구현의 "자연"정수 크기를 따르며 일반적으로 동일한 플랫폼에서 이전 릴리스의 sys.maxint와 동일합니다 (동일한 빌드 옵션을 가정).

그리고 차이점에 관심이 있는 사람이라면 누구나 (Python 2.x) :

sys.maxint Python의 일반 정수 유형에서 지원하는 가장 큰 양의 정수입니다. 이것은 적어도 2 ** 31-1입니다. 가장 큰 음의 정수는 -maxint-1입니다. 비대칭은 2의 보수 이진 산술을 사용한 결과입니다.

sys.maxsize 플랫폼의 Py_ssize_t 유형에서 지원하는 가장 큰 양의 정수이므로 최대 크기 목록, 문자열, dict 및 기타 여러 컨테이너가 가질 수 있습니다.

완전성을 위해 다음은 Python 3 버전입니다 .

sys.maxsize Py_ssize_t 유형의 변수가 취할 수있는 최대 값을 제공하는 정수입니다. 일반적으로 32 비트 플랫폼에서는 2 ^ 31-1이고 64 비트 플랫폼에서는 2 ^ 63-1입니다.

수레 :

있다 float("inf")float("-inf"). 다른 숫자 유형과 비교할 수 있습니다.

>>> import sys
>>> float("inf") > sys.maxsize
True

동일한 코드를 시도했지만 Windows 64 비트 컴퓨터의 Python 3에서 int로 여전히 유형이 표시됩니다. 그것에 대한 가치있는 이유.
ManojP

1
@ManojP 파이썬 3에서 더 이상 정수의 크기에 제한이 없기 때문입니다. 첫 번째 블록 인용문을보십시오. 예제가 Python 2임을 명확히하기 위해 편집하겠습니다
keyser

39

Python long은 임의로 클 수 있습니다. 다른 어떤 값보다 더 큰 값이 필요한 경우를 사용할 수 있습니다 float('inf'). Python은 다른 유형의 숫자 ​​값을 비교하는 데 문제가 없기 때문입니다. 마찬가지로 다른 값보다 작은 값의 경우 float('-inf').


1
그래서 그것은 매우 큰 값을 반환합니까?
Sreevisakh

4
유한 수보다 큰 부동 소수점 무한대를 반환합니다.
Taymon 2012 년

4
나는이 답변이 OP의 제목 질문에 대한 응답 측면에서 정답에 가장 가깝다고 말해야합니다. 즉, "모든 입력보다 더 큰 (또는 적어도 가장 큰 값보다 작지 않은) 파이썬 센티넬 값을 어떻게 얻습니까?"입니다. 그래서 나는이 대답을 찬성했지만 OP가 대신 Python으로 생각하는 것을 배우면 더 낫다고 생각합니다.
John Y

동의합니다. 즉, 이것이 내가 필요한 일을 할 수있는 유일한 방법 인 상황에 처해 있습니다.
Taymon 2012 년

21

제목 질문에 대한 직접적인 답변 :

정수는 크기가 무제한이며 Python에서 최대 값이 없습니다.

명시된 기본 사용 사례를 다루는 답변 :

당신이하려는 일에 대한 당신의 의견에 따르면, 당신은 현재

minval = MAXINT;
for (i = 1; i < num_elems; i++)
    if a[i] < a[i-1]
        minval = a[i];

그것은 파이썬에서 생각하는 방법이 아닙니다. Python에 대한 더 나은 번역 (하지만 여전히 최고는 아닙니다)은 다음과 같습니다.

minval = a[0]  # Just use the first value
for i in range(1, len(a)):
    minval = min(a[i], a[i - 1])

위의 내용은 MAXINT를 전혀 사용하지 않습니다. 솔루션의 해당 부분은 모든 프로그래밍 언어에 적용됩니다. 컬렉션에서 가장 작은 값을 찾기 위해 가능한 가장 높은 값을 알 필요는 없습니다.

하지만 어쨌든 파이썬에서 실제로하는 일은

minval = min(a)

즉, 루프를 전혀 작성하지 않습니다. 내장 min()함수는 전체 컬렉션의 최소값을 가져옵니다.


8

longPython 2.x의 유형은 임의의 정밀도 산술을 사용하며 가능한 최대 값이 없습니다. 사용 가능한 메모리에 의해 제한됩니다. Python 3.x에는 기본 기계 정수로 표현할 수없는 값에 대한 특별한 유형이 없습니다. 모든 것이 int있고 변환은 뒤에서 처리됩니다.


7

Python의 C / C ++ Long은 정밀도가 무제한입니다. 자세한 정보는 파이썬의 숫자 유형 섹션을 참조하십시오 sys.maxint. 정수의 최대 값을 결정하려면을 참조하십시오 . 자세한 내용은 sys 문서에서 얻을 수 있습니다 .


1

다음을 사용할 수 있습니다. float의 최대 값은

float('inf')

부정적인

float('-inf')

2
제목은 float의 최대 값이 아니라 "long integer의 최대 값" 입니다. 따라서 이것이 질문에 어떻게 대답 하는지 설명하지 않고 나는이 NAA (답이 아님)로 간주합니다.
Sнаđошƒаӽ nov.

0

python3에서 float 값을 int 함수에 보낼 수 있으며 정수 표현으로 1.7976931348623157e + 308을 가져올 수 있습니다.

import sys    
int(sys.float_info.max)

이것은 전혀 유용한 일을하지 않습니다. 그것을 설명하기 위해 int (sys.float_info.max) +1을 시도하면 다른 주석이 설명했듯이 Python은 무제한 정밀도 정수를 저장하기 때문에 하나 이상의 정수를 얻을 수 있습니다.
tialaramex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.