Python

부동 소수점 객체

type PyFloatObject

PyObject의 서브 형은 파이썬 부동 소수점 객체를 나타냅니다.

PyTypeObject PyFloat_Type
…의 일부 안정 ABI.

PyTypeObject 인스턴스는 파이썬 부동 소수점 형을 나타냅니다. 이것은 파이썬 계층에서 float와 같은 객체입니다.

int PyFloat_Check(PyObject *p)

인자가 PyFloatObjectPyFloatObject의 서브 형이면 참을 반환합니다. 이 함수는 항상 성공합니다.

int PyFloat_CheckExact(PyObject *p)

인자가 PyFloatObject이지만 PyFloatObject의 서브 형은 아니면 참을 반환합니다. 이 함수는 항상 성공합니다.

PyObject *PyFloat_FromString(PyObject *str)
반환값: 새 참조. …의 일부 안정 ABI.

str의 문자열 값을 기반으로 PyFloatObject 객체를 만들거나, 실패하면 NULL.

PyObject *PyFloat_FromDouble(double v)
반환값: 새 참조. …의 일부 안정 ABI.

v로부터 PyFloatObject 객체를 만들거나, 실패하면 NULL.

double PyFloat_AsDouble(PyObject *pyfloat)
…의 일부 안정 ABI.

pyfloat 의 내용의 C double 표현을 반환합니다. pyfloat가 파이썬 부동 소수점 객체가 아니지만 __float__() 메서드가 있으면, pyfloat를 float로 변환하기 위해 이 메서드가 먼저 호출됩니다. __float__()가 정의되지 않았으면 __index__()로 대체합니다. 이 메서드는 실패하면 -1.0을 반환하므로, PyErr_Occurred()를 호출하여 에러를 확인해야 합니다.

버전 3.8에서 변경: 사용할 수 있으면 __index__()를 사용합니다.

double PyFloat_AS_DOUBLE(PyObject *pyfloat)

에러 검사 없이 pyfloat 의 내용의 C double 표현을 반환합니다.

PyObject *PyFloat_GetInfo(void)
반환값: 새 참조. …의 일부 안정 ABI.

float의 정밀도, 최솟값, 최댓값에 관한 정보를 포함한 structseq 인스턴스를 돌려줍니다. 헤더 파일 float.h를 감싸는 얇은 래퍼입니다.

double PyFloat_GetMax()
…의 일부 안정 ABI.

최대 표현 가능한 유한 float DBL_MAX를 C double로 반환합니다.

double PyFloat_GetMin()
…의 일부 안정 ABI.

최소 정규화된(normalized) 양의 float DBL_MIN를 C double로 반환합니다.

Py_INFINITY

이 매크로는 양의 무한대를 나타내는 double 타입의 상수 표현식으로 확장됩니다.

이는 C11 표준 <math.h> 헤더의 INFINITY 매크로와 동등합니다.

Py_NAN

이 매크로는 조용한 NaN(qNaN) 값을 나타내는 double 타입의 상수 표현식으로 확장됩니다.

대부분의 플랫폼에서 이는 C11 표준 <math.h> 헤더의 NAN 매크로와 동등합니다.

Py_HUGE_VAL

INFINITY 와 동등합니다.

Py_MATH_E

상수 math.e`의 정의(:c:expr:`double 타입에 정확함).

Py_MATH_El

e 상수의 고정밀도(long double) 정의입니다.

버전 3.15부터 사용 지원 중단(deprecated), 버전 3.20에서 제거 예정.

Py_MATH_PI

상수 math.pi`의 정의(:c:expr:`double 타입에 정확함).

Py_MATH_PIl

pi 상수의 고정밀도(long double) 정의입니다.

버전 3.15부터 사용 지원 중단(deprecated), 버전 3.20에서 제거 예정.

Py_MATH_TAU

상수 math.tau`의 정의(:c:expr:`double 타입에 정확함).

Added in version 3.6.

Py_RETURN_NAN

함수에서 math.nan 을 반환합니다.

대부분의 플랫폼에서 이는 return PyFloat_FromDouble(NAN) 과 동등합니다.

Py_RETURN_INF(sign)

sign 의 부호에 따라 함수에서 math.inf 또는 -math.inf 를 반환합니다.

대부분의 플랫폼에서 이는 다음과 동등합니다:

return PyFloat_FromDouble(copysign(INFINITY, sign));
Py_IS_FINITE(X)

주어진 부동 소수점 수 X 가 유한체(즉, 정규, 비정규 또는 0이지만 무한대나 NaN이 아님)이면 1 을 반환하고, 그렇지 않으면 0 을 반환합니다.

버전 3.14부터 약하게 폐지 <Soft deprecated>: 대신 isfinite 를 사용하십시오.

Py_IS_INFINITY(X)

주어진 부동 소수점 수 X 가 양의 무한대 또는 음의 무한대이면 1 을 반환하고, 그렇지 않으면 0 을 반환합니다.

버전 3.14부터 약하게 폐지 <Soft deprecated>: 대신 isinf 를 사용하십시오.

Py_IS_NAN(X)

주어진 부동 소수점 수 X 가 NaN(not-a-number) 값이면 1 을 반환하고, 그렇지 않으면 0 을 반환합니다.

버전 3.14부터 약하게 폐지 <Soft deprecated>: 대신 isnan 을 사용하십시오.

팩킹 및 언패킹 함수

팩 및 언팩 함수는 부동 소수점 값을 바이트 문자열로 저장하는 효율적인 플랫폼 독립적 방식을 제공합니다. Pack 루틴은 C double 로부터 바이트 문자열을 생성하고, Unpack 루틴은 해당 바이트 문자열로부터 C double 을 생성합니다. 접미사(2, 4 또는 8)는 바이트 문자열의 바이트 수를 지정합니다.

  • 2바이트 형식은 IEEE 754 binary16 반 정밀도(half-precision) 형식입니다.

  • 4바이트 형식은 IEEE 754 binary32 단정밀도(single-precision) 형식입니다.

  • 8바이트 형식은 IEEE 754 binary64 배정밀도(double-precision) 형식입니다.

일부 플랫폼(예를 들어 32비트 모드에서의 x86 시스템)에서 언패킹 시 NaN 타입이 유지되지 않을 수 있습니다(신호형 NaN이 조용한 NaN으로 변함).

double 타입이 IEEE 754 binary64 배정밀도 형식을 따른다고 가정합니다. 이 가정이 사실이 아닐 경우 발생하는 상황은 부분적으로 우연에 맡겨져 있습니다(안타깝게도). IEEE 754가 지원하는 것보다 더 높은 정밀도나 더 넓은 동적 범위를 가진 비-IEEE 플랫폼에서는 모든 값이 패킹될 수 없으며, IEEE 754보다 낮은 정밀도나 좁은 동적 범위를 가진 비-IEEE 플랫폼에서는 모든 값이 언패킹될 수 없습니다. INF 및 NaN과 같은 특수 숫자(해당 플랫폼에 존재할 경우)의 패킹이 올바르게 처리되지 않을 수 있으며, IEEE INF 또는 NaN을 포함하는 바이트 문자열을 언패킹하려고 시도하면 예외가 발생할 수 있습니다.

Added in version 3.11.

팩 기능

팩 루틴은 p 부터 시작하여 2, 4 또는 8바이트를 작성합니다. leint 인자로, 리틀 엔디안 형식(지수가 마지막에 위치)을 원할 경우 0이 아닌 값, 빅 엔디안 형식(지수가 처음에 위치)을 원할 경우 0을 할당합니다. 네이티브 엔디안을 선택하려면 PY_LITTLE_ENDIAN 상수를 사용하십시오. 이 상수는 빅 엔디언 프로세서에서는 0 과 같고, 리틀 엔디언 프로세서에서는 1 과 같습니다.

반환값: 모든 것이 정상이면 0, 오류 시(및 예외가 설정됨, 대부분의 경우 OverflowError) -1.

int PyFloat_Pack2(double x, char *p, int le)

C double을 IEEE 754 binary16 반 정밀도 형식으로 패킹합니다.

int PyFloat_Pack4(double x, char *p, int le)

C double을 IEEE 754 binary32 단정밀도 형식으로 패킹합니다.

int PyFloat_Pack8(double x, char *p, int le)

C double을 IEEE 754 binary64 배정밀도 형식으로 패킹합니다.

이 함수는 CPython에서 항상 성공합니다.

언패킹 기능

언패킹 루틴은 p 부터 시작하여 2, 4 또는 8바이트를 읽습니다. leint 인자로, 바이트 문자열이 리틀 엔디안 형식(지수가 마지막에 위치)이면 0이 아닌 값, 빅 엔디안(지수가 처음에 위치)이면 0을 할당합니다. 네이티브 엔디안을 선택하려면 PY_LITTLE_ENDIAN 상수를 사용하십시오. 이 상수는 빅 엔디언 프로세서에서는 0 과 같고, 리틀 엔디언 프로세서에서는 1 과 같습니다.

반환값: 언패킹된 double 값. 오류 시 이 값은 -1.0 이며 PyErr_Occurred() 가 참이 됩니다(또한 예외가 설정되며, 대개 OverflowError 입니다).

이 함수들은 CPython에서 항상 성공합니다.

double PyFloat_Unpack2(const char *p, int le)

IEEE 754 binary16 반 정밀도 형식을 C double로 언패킹합니다.

double PyFloat_Unpack4(const char *p, int le)

IEEE 754 binary32 단정밀도 형식을 C double로 언패킹합니다.

double PyFloat_Unpack8(const char *p, int le)

IEEE 754 binary64 배정밀도 형식을 C double로 언패킹합니다.

분실물 보관소