/* Float object interface *//*PyFloatObject represents a (double precision) floating point number.*/#ifndef Py_FLOATOBJECT_H#define Py_FLOATOBJECT_H#ifdef __cplusplusextern "C" {#endif#ifndef Py_LIMITED_APItypedef struct {PyObject_HEADdouble ob_fval;} PyFloatObject;#endifPyAPI_DATA(PyTypeObject) PyFloat_Type;#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)#define PyFloat_CheckExact(op) (Py_TYPE(op) == &PyFloat_Type)#ifdef Py_NAN#define Py_RETURN_NAN return PyFloat_FromDouble(Py_NAN)#endif#define Py_RETURN_INF(sign) do \if (copysign(1., sign) == 1.) { \return PyFloat_FromDouble(Py_HUGE_VAL); \} else { \return PyFloat_FromDouble(-Py_HUGE_VAL); \} while(0)PyAPI_FUNC(double) PyFloat_GetMax(void);PyAPI_FUNC(double) PyFloat_GetMin(void);PyAPI_FUNC(PyObject *) PyFloat_GetInfo(void);/* Return Python float from string PyObject. */PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*);/* Return Python float from C double. */PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double);/* Extract C double from Python float. The macro version trades safety forspeed. */PyAPI_FUNC(double) PyFloat_AsDouble(PyObject *);#ifndef Py_LIMITED_API#define PyFloat_AS_DOUBLE(op) (((PyFloatObject *)(op))->ob_fval)#endif#ifndef Py_LIMITED_API/* _PyFloat_{Pack,Unpack}{4,8}** The struct and pickle (at least) modules need an efficient platform-* independent way to store floating-point values as byte strings.* The Pack routines produce a string from a C double, and the Unpack* routines produce a C double from such a string. The suffix (4 or 8)* specifies the number of bytes in the string.** On platforms that appear to use (see _PyFloat_Init()) IEEE-754 formats* these functions work by copying bits. On other platforms, the formats the* 4- byte format is identical to the IEEE-754 single precision format, and* the 8-byte format to the IEEE-754 double precision format, although the* packing of INFs and NaNs (if such things exist on the platform) isn't* handled correctly, and attempting to unpack a string containing an IEEE* INF or NaN will raise an exception.** On non-IEEE platforms with more precision, or larger dynamic range, than* 754 supports, not all values can be packed; on non-IEEE platforms with less* precision, or smaller dynamic range, not all values can be unpacked. What* happens in such cases is partly accidental (alas).*//* The pack routines write 4 or 8 bytes, starting at p. le is a bool* argument, true if you want the string in little-endian format (exponent* last, at p+3 or p+7), false if you want big-endian format (exponent* first, at p).* Return value: 0 if all is OK, -1 if error (and an exception is* set, most likely OverflowError).* There are two problems on non-IEEE platforms:* 1): What this does is undefined if x is a NaN or infinity.* 2): -0.0 and +0.0 produce the same string.*/PyAPI_FUNC(int) _PyFloat_Pack4(double x, unsigned char *p, int le);PyAPI_FUNC(int) _PyFloat_Pack8(double x, unsigned char *p, int le);/* Needed for the old way for marshal to store a floating point number.Returns the string length copied into p, -1 on error.*/PyAPI_FUNC(int) _PyFloat_Repr(double x, char *p, size_t len);/* Used to get the important decimal digits of a double */PyAPI_FUNC(int) _PyFloat_Digits(char *buf, double v, int *signum);PyAPI_FUNC(void) _PyFloat_DigitsInit(void);/* The unpack routines read 4 or 8 bytes, starting at p. le is a bool* argument, true if the string is in little-endian format (exponent* last, at p+3 or p+7), false if big-endian (exponent first, at p).* Return value: The unpacked double. On error, this is -1.0 and* PyErr_Occurred() is true (and an exception is set, most likely* OverflowError). Note that on a non-IEEE platform this will refuse* to unpack a string that represents a NaN or infinity.*/PyAPI_FUNC(double) _PyFloat_Unpack4(const unsigned char *p, int le);PyAPI_FUNC(double) _PyFloat_Unpack8(const unsigned char *p, int le);/* free list api */PyAPI_FUNC(int) PyFloat_ClearFreeList(void);PyAPI_FUNC(void) _PyFloat_DebugMallocStats(FILE* out);/* Format the object based on the format_spec, as defined in PEP 3101(Advanced String Formatting). */PyAPI_FUNC(int) _PyFloat_FormatAdvancedWriter(_PyUnicodeWriter *writer,PyObject *obj,PyObject *format_spec,Py_ssize_t start,Py_ssize_t end);#endif /* Py_LIMITED_API */#ifdef __cplusplus}#endif#endif /* !Py_FLOATOBJECT_H */
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型