부동 소수점 객체¶
-
PyTypeObject PyFloat_Type¶
- 상의 안정 ABI.
이
PyTypeObject인스턴스는 파이썬 부동 소수점 형을 나타냅니다. 이것은 파이썬 계층에서float와 같은 객체입니다.
-
int PyFloat_Check(PyObject *p)¶
인자가
PyFloatObject나PyFloatObject의 서브 형이면 참을 반환합니다. 이 함수는 항상 성공합니다.
-
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__()를 사용합니다.
-
PyObject *PyFloat_GetInfo(void)¶
- 반환값: 새 참조. 상의 안정 ABI.
float의 정밀도, 최솟값, 최댓값에 관한 정보를 포함한 structseq 인스턴스를 돌려줍니다. 헤더 파일
float.h를 감싸는 얇은 래퍼입니다.
-
Py_INFINITY¶
이 매크로는 양의 무한대를 나타내는 double 타입의 상수 표현식으로 확장됩니다.
이는 C11 표준
<math.h>헤더의INFINITY매크로와 동등합니다.버전 3.15부터 약하게 폐지 <Soft deprecated>.
-
Py_NAN¶
이 매크로는 양의 NaN(quiet not-a-number) 값을 나타내는 double 타입의 상수 표현식으로 확장됩니다.
대부분의 플랫폼에서, 이는 C11 표준
<math.h>헤더의NAN매크로와 동등합니다.
-
Py_HUGE_VAL¶
:c:macro:`!INFINITY`와 동등합니다.
버전 3.14부터 약하게 폐지 <Soft deprecated>.
-
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바이트를 씁니다. le 는 int 인수로, 바이트 문자열을 리틀 엔디안 형식(지수 마지막, p+1, p+3, 또는 p+6 및 p+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바이트를 읽습니다. le 는 int 인자이며, 바이트 문자열이 리틀 엔디안 형식인 경우 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)으로 언패킹합니다.