Содержание страницы
Объекты с плавающей запятой¶Floating-Point Objects
-
PyTypeObject PyFloat_Type¶
- Часть Stable ABI.
Этот экземпляр
PyTypeObjectпредставляет тип с плавающей запятой в Python. Это тот же объект, что иfloatна уровне Python.
-
int PyFloat_Check(PyObject *p)¶
Возвращает истину, если аргумент является
PyFloatObjectили подтипомPyFloatObject. Эта функция всегда завершается успешно.
-
int PyFloat_CheckExact(PyObject *p)¶
Возвращает истину, если аргумент является
PyFloatObject, но не подтипомPyFloatObject. Эта функция всегда завершается успешно.
-
PyObject *PyFloat_FromString(PyObject *str)¶
- Возвращаемое значение: новая ссылка. Часть Stable ABI.
Создаёт объект
PyFloatObjectна основе строкового значения str илиNULLв случае ошибки.
-
PyObject *PyFloat_FromDouble(double v)¶
- Возвращаемое значение: новая ссылка. Часть Stable ABI.
Создаёт объект
PyFloatObjectиз v илиNULLв случае ошибки.
-
double PyFloat_AsDouble(PyObject *pyfloat)¶
- Часть Stable ABI.
Возвращает представление содержимого pyfloat в виде C double. Если pyfloat не является объектом с плавающей запятой Python, но имеет метод
__float__(), то сначала будет вызван этот метод для преобразования pyfloat в число с плавающей запятой. Если__float__()не определён, то используется__index__(). Этот метод возвращает-1.0при неудаче, поэтому следует вызыватьPyErr_Occurred()для проверки ошибок.Изменено в версии 3.8: Используйте
__index__(), если доступно.
-
double PyFloat_AS_DOUBLE(PyObject *pyfloat)¶
Возвращает представление содержимого pyfloat в виде C double, но без проверки ошибок.
-
PyObject *PyFloat_GetInfo(void)¶
- Возвращаемое значение: новая ссылка. Часть Stable ABI.
Возвращает экземпляр structseq, содержащий информацию о точности, минимальном и максимальном значениях числа с плавающей запятой. Это тонкая обёртка вокруг заголовочного файла
float.h.
-
double PyFloat_GetMax()¶
- Часть Stable ABI.
Возвращает максимальное представимое конечное число с плавающей запятой DBL_MAX в виде C double.
-
double PyFloat_GetMin()¶
- Часть Stable ABI.
Возвращает минимальное нормализованное положительное число с плавающей запятой DBL_MIN в виде C double.
-
Py_INFINITY¶
Этот макрос раскрывается в константное выражение типа double, представляющее положительную бесконечность.
Он эквивалентен макросу
INFINITYиз заголовочного файла<math.h>стандарта C11.Условно устарело с версии 3.15.
-
Py_NAN¶
Этот макрос раскрывается в константное выражение типа double, представляющее тихое нечисло (qNaN).
На большинстве платформ он эквивалентен макросу
NANиз заголовочного файла<math.h>стандарта C11.
-
Py_HUGE_VAL¶
Эквивалентно
INFINITY.Soft deprecated since version 3.14.
-
Py_MATH_El¶
Определение константы
eс высокой точностью (long double).Устарело с версии 3.15, будет удалено в версии 3.20.
-
Py_MATH_PIl¶
Определение константы
piс высокой точностью (long double).Устарело с версии 3.15, будет удалено в версии 3.20.
-
Py_RETURN_NAN¶
Возвращает
math.nanиз функции.На большинстве платформ это эквивалентно
return PyFloat_FromDouble(NAN).
-
Py_RETURN_INF(sign)¶
Возвращает
math.infили-math.infиз функции, в зависимости от знака sign.На большинстве платформ это эквивалентно следующему:
return PyFloat_FromDouble(copysign(INFINITY, sign));
-
Py_IS_FINITE(X)¶
Возвращает
1, если переданное число с плавающей запятой X конечно, то есть является нормальным, субнормальным или нулём, но не бесконечностью или NaN. В противном случае возвращает0.Мягко устарело с версии 3.14: Используйте
isfiniteвместо этого.
-
Py_IS_INFINITY(X)¶
Возвращает
1, если переданное число с плавающей запятой X является положительной или отрицательной бесконечностью. В противном случае возвращает0.Мягко устарело с версии 3.14: Используйте
isinfвместо этого.
-
Py_IS_NAN(X)¶
Возвращает
1, если переданное число с плавающей запятой X является не-числом (NaN). В противном случае возвращает0.Мягко устарело с версии 3.14: Используйте
isnanвместо этого.
Функции упаковки и распаковки¶Pack and Unpack functions
Функции упаковки и распаковки предоставляют эффективный платформонезависимый способ хранения чисел с плавающей запятой в виде строк байтов. Функции Pack создают строку байтов из C double, а функции Unpack создают C double из такой строки байтов. Суффикс (2, 4 или 8) указывает количество байтов в строке байтов:
2-байтовый формат – это формат половинной точности IEEE 754 binary16.
4-байтовый формат – это формат одинарной точности IEEE 754 binary32.
8-байтовый формат – это формат двойной точности IEEE 754 binary64.
Тип NaN может не сохраняться на некоторых платформах при распаковке (сигнальные NaN становятся тихими NaN), например, на x86-системах в 32-битном режиме.
Предполагается, что тип double имеет формат IEEE 754 binary64 (двойная точность). Что происходит, если это не так, отчасти случайно (увы). На платформах, отличных от IEEE, с большей точностью или бо́льшим динамическим диапазоном, чем поддерживает IEEE 754, можно упаковать не все значения; на платформах с меньшей точностью или меньшим динамическим диапазоном – распаковать не все значения. Упаковка специальных чисел, таких как INF и NaN (если они существуют на платформе), может выполняться некорректно, а попытка распаковать строку байтов, содержащую IEEE INF или NaN, может вызвать исключение.
Добавлено в версии 3.12.
Функции упаковки¶Pack functions
Процедуры упаковки записывают 2, 4 или 8 байтов, начиная с p. le – это аргумент типа int; ненулевое значение указывает, что строка байтов должна быть в формате little-endian (порядок от младшего к старшему: экспонента последней, на позициях p+1, p+3 или p+6 и p+7); нулевое – в формате big-endian (экспонента первой, на p). Используйте константу PY_LITTLE_ENDIAN для выбора нативного порядка байтов: она равна 0 на процессоре с прямым порядком байтов (big-endian) и 1 на процессоре с обратным порядком (little-endian).
Возвращаемое значение: 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: В CPython эта функция всегда выполняется успешно.
Функции распаковки¶Unpack functions
Процедуры распаковки читают 2, 4 или 8 байтов, начиная с p. le – это аргумент типа int; ненулевое значение указывает, что строка байтов имеет формат little-endian (экспонента последняя, на позициях p+1, p+3 или p+6 и p+7); нулевое – big-endian (экспонента первая, на p). Используйте константу PY_LITTLE_ENDIAN для выбора нативного порядка байтов: она равна 0 на процессоре с прямым порядком байтов и 1 на процессоре с обратным порядком.
Возвращаемое значение: распакованное число double. В случае ошибки возвращается -1.0, а PyErr_Occurred() становится истинным (при этом устанавливается исключение, скорее всего OverflowError).
Особенности реализации CPython: В 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.