Числовые объекты с плавающей точкой
-
type PyFloatObject -
Этот подтип
PyObjectпредставляет собой объект Python с плавающей точкой.
-
PyTypeObject PyFloat_Type -
Часть Стабильной ABI.
Этот экземпляр
PyTypeObjectпредставляет собой тип Python с плавающей точкой. Это тот же объект, что иfloatв слое Python.
-
int PyFloat_Check(PyObject *p) -
Возвращает true, если его аргумент является
PyFloatObjectили подтипомPyFloatObject. Эта функция всегда завершается успешно.
-
int PyFloat_CheckExact(PyObject *p) -
Возвращает true, если его аргумент является
PyFloatObject, но не подтипомPyFloatObject. Эта функция всегда завершается успешно.
-
PyObject *PyFloat_FromString(PyObject *str) -
Возвращаемое значение: новая ссылка. Часть Стабильной ABI.
Создает объект
PyFloatObjectна основе строкового значения в str илиNULLпри ошибке.
-
PyObject *PyFloat_FromDouble(double v) -
Возвращаемое значение: новая ссылка. Часть Стабильной ABI.
Создает объект
PyFloatObjectиз v илиNULLпри ошибке.
-
double PyFloat_AsDouble(PyObject *pyfloat) -
Часть Стабильной ABI.
Возвращает представление C double содержимого pyfloat. Если pyfloat не является объектом Python с плавающей точкой, но имеет метод
__float__(), этот метод будет сначала вызван для преобразования pyfloat в float. Если__float__()не определен, используется__index__(). Этот метод возвращает-1.0при ошибке, поэтому необходимо вызватьPyErr_Occurred()для проверки ошибок.Изменено в версии 3.8: Используется
__index__(), если доступно.
-
double PyFloat_AS_DOUBLE(PyObject *pyfloat) -
Возвращает представление C double содержимого pyfloat, но без проверки ошибок.
-
PyObject *PyFloat_GetInfo(void) -
Возвращаемое значение: новая ссылка. Часть Стабильной ABI.
Возвращает экземпляр structseq, содержащий информацию о точности, минимальных и максимальных значениях числа с плавающей точкой. Это тонкий обертка над заголовочным файлом
float.h.
-
double PyFloat_GetMax() -
Часть Стабильной ABI.
Возвращает максимальное представимое конечное число с плавающей точкой DBL_MAX как C double.
-
double PyFloat_GetMin() -
Часть Стабильной ABI.
Возвращает минимальное нормированное положительное число с плавающей точкой DBL_MIN как C double.
Функции упаковки и распаковки
Функции упаковки и распаковки предоставляют эффективный независимый от платформы способ хранения значений чисел с плавающей точкой в виде байтовых строк. Функции упаковки преобразуют C double в байтовую строку, а функции распаковки — байтовую строку в C double. Суффикс (2, 4 или 8) указывает количество байтов в байтовой строке.
На платформах, использующих форматы IEEE 754, эти функции работают, копируя биты. На других платформах формат 2 байта идентичен формату IEEE 754 binary16 half-precision, формат 4 байта (32-бит) идентичен формату IEEE 754 binary32 single precision, а формат 8 байт — формату IEEE 754 binary64 double precision, хотя упаковка INFs и NaNs (если такие вещи существуют на платформе) обрабатывается некорректно, а попытка распаковать байтовую строку, содержащую IEEE INF или NaN, вызовет исключение.
На не-IEEE платформах с большей точностью или большим диапазоном, чем поддерживает IEEE 754, не все значения могут быть упакованы; на не-IEEE платформах с меньшей точностью или меньшим диапазоном не все значения могут быть распакованы. Что происходит в таких случаях, отчасти случайность (к сожалению).
Добавлен в версии 3.11.
Функции упаковки
Функции упаковки записывают 2, 4 или 8 байт, начиная с p. le — аргумент типа int, не нулевой, если вы хотите байтовую строку в формате little-endian (порядок байтов меняется), нулевой, если вы хотите big-endian формат (порядок байтов не меняется). Константа PY_BIG_ENDIAN может быть использована для использования родного порядка байтов: она равна 1 на процессорах с big-endian или 0 на процессорах с little-endian.
Возвращаемое значение: 0 если все в порядке, -1 при ошибке (и исключение установлено, скорее всего, OverflowError).
На не-IEEE платформах есть две проблемы:
- Поведение этой функции неопределенно, если x является NaN или бесконечностью.
-
-0.0и+0.0производят одну и ту же байтовую строку.
-
int PyFloat_Pack2(double x, unsigned char *p, int le) -
Упаковывает C double в формате IEEE 754 binary16 half-precision.
-
int PyFloat_Pack4(double x, unsigned char *p, int le) -
Упаковывает C double в формате IEEE 754 binary32 single precision.
-
int PyFloat_Pack8(double x, unsigned char *p, int le) -
Упаковывает C double в формате IEEE 754 binary64 double precision.
Функции распаковки
Функции распаковки считывают 2, 4 или 8 байт, начиная с p. le — аргумент типа int, не нулевой, если байтовая строка в формате little-endian (порядок байтов меняется), нулевой, если big-endian (порядок байтов не меняется). Константа PY_BIG_ENDIAN может быть использована для использования родного порядка байтов: она равна 1 на процессорах с big-endian или 0 на процессорах с little-endian.
Возвращаемое значение: распакованное значение double. При ошибке возвращается -1.0 и PyErr_Occurred() истинно (и исключение установлено, скорее всего, OverflowError).
Обратите внимание, что на не-IEEE платформах эта функция откажется распаковывать байтовую строку, представляющую NaN или бесконечность.
-
double PyFloat_Unpack2(const unsigned char *p, int le) -
Распаковывает формат IEEE 754 binary16 half-precision как C double.
-
double PyFloat_Unpack4(const unsigned char *p, int le) -
Распаковывает формат IEEE 754 binary32 single precision как C double.
-
double PyFloat_Unpack8(const unsigned char *p, int le) -
Распаковывает формат IEEE 754 binary64 double precision как C double.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/float.html