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(quiet not-a-number) 값을 나타내는 double 타입의 상수 표현식으로 확장됩니다.

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

Py_HUGE_VAL

:c:macro:`!INFINITY`와 동등합니다.

Py_MATH_E

math.e 상수의 정의 ( double 타입에 정확함).

Py_MATH_El

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

버전 3.15에서 폐지되었고, 버전 3.20에서 제거됩니다.

Py_MATH_PI

math.pi 상수의 정의 ( double 타입에 정확함).

Py_MATH_PIl

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

버전 3.15에서 폐지되었고, 버전 3.20에서 제거됩니다.

Py_MATH_TAU

math.tau 상수의 정의 ( double 타입에 정확함).

Added in version 3.6.

Py_RETURN_NAN

함수에서 :data:`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>: 대신 :c:macro:`!isfinite`를 사용하십시오.

Py_IS_INFINITY(X)

주어진 부동 소수점 숫자 X 가 양 또는 음의 무한대인 경우 1 을 반환합니다. 그렇지 않으면 0 을 반환합니다.

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

Py_IS_NAN(X)

주어진 부동 소수점 숫자 X 가 비정규화(NaN) 값인 경우 1 을 반환합니다. 그렇지 않으면 0 을 반환합니다.

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

패킹 및 언패킹 함수

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

  • 2바이트 형식은 IEEE 754 binary16 반정밀도 형식입니다.

  • 4바이트 형식은 IEEE 754 binary32 단정밀도 형식입니다.

  • 8바이트 형식은 IEEE 754 binary64 배정밀도 형식입니다.

NaN 타입은 일부 플랫폼에서 언패킹하는 동안 보존되지 않을 수 있습니다 (예: 32비트 모드의 x86 시스템에서 신호 NaN이 조용한 NaN이 됨).

double 타입은 IEEE 754 binary64 배정밀도 형식을 갖는 것으로 가정합니다. 이것이 사실이 아닐 경우 발생하는 일은 부분적으로 우연적입니다 (아아). IEEE 754가 지원하는 것보다 정밀도나 동적 범위가 더 큰 비-IEEE 플랫폼에서는 모든 값을 패킹할 수 없으며, 정밀도나 동적 범위가 더 작은 비-IEEE 플랫폼에서는 모든 값을 언패킹할 수 없습니다. INF 및 NaN과 같은 특수 숫자의 패킹은 (플랫폼에 그러한 것이 존재한다면) 올바르게 처리되지 않을 수 있으며, IEEE INF 또는 NaN을 포함하는 바이트 문자열을 언패킹하려고 시도하면 예외가 발생할 수 있습니다.

Added in version 3.11.

패킹 함수

패킹 루틴은 p 에서 시작하여 2, 4 또는 8바이트를 씁니다. leint 인수로, 바이트 문자열을 리틀 엔디안 형식(지수 마지막, p+1, p+3, 또는 p+6p+7 에 위치)으로 원하는 경우 0이 아니며, 빅 엔디안 형식(지수가 첫 번째, p 에 위치)으로 원하는 경우 0입니다. 네이티브 엔디안을 선택하려면 PY_LITTLE_ENDIAN 상수를 사용하십시오. 이는 빅 엔디안 프로세서에서는 0, 또는 리틀 엔디안 프로세서에서는 1 과 같습니다.

반환 값: 모든 것이 정상이면 0, 오류이면 -1 (예외가 설정되며, 가장 가능성이 높은 것은 OverflowError).

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이 아니며 (지수가 맨 마지막, p+1, p+3 또는 p+6 및 p+7에 있음), 빅 엔디안인 경우 0입니다 (지수가 첫 번째, p 에 있음). 기본 엔디안을 선택하려면 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)으로 언패킹합니다.

분실물 보관소