اشیاء ممیز شناور¶
-
type PyFloatObject¶
این زیرنوع از PyObject نمایانگر یک شیء ممیز شناور پایتون است.
-
PyTypeObject PyFloat_Type¶
- قسمتی از ABI پایدار.
این نمونه از PyTypeObject نوع ممیز شناور پایتون را نشان میدهد. این همان شیء float در لایهی پایتون است.
-
int PyFloat_Check(PyObject *p)¶
اگر آرگومان آن یک PyFloatObject یا زیرنوعی از PyFloatObject باشد، مقدار درست را برمیگرداند. این تابع همیشه با موفقیت انجام میشود.
-
int PyFloat_CheckExact(PyObject *p)¶
اگر آرگومان آن یک PyFloatObject باشد، اما زیرنوعی از PyFloatObject نباشد، مقدار true برمیگرداند. این تابع همیشه موفق میشود.
-
PyObject *PyFloat_FromString(PyObject *str)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
ایجاد یک شیء PyFloatObject بر اساس مقدار رشته در str، یا NULL در صورت شکست.
-
PyObject *PyFloat_FromDouble(double v)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
یک شیء PyFloatObject از v میسازد، یا در صورت شکست NULL.
-
double PyFloat_AsDouble(PyObject *pyfloat)¶
- قسمتی از ABI پایدار.
یک نمایش double در C از محتویات pyfloat برمیگرداند. اگر pyfloat یک شیء ممیز شناور پایتون نباشد اما متد __float__() را داشته باشد، این متد ابتدا برای تبدیل pyfloat به یک عدد ممیز شناور فراخوانی میشود. اگر __float__() تعریفنشده باشد، به __index__() بازمیگردد. این متد در صورت شکست -1.0 را برمیگرداند، بنابراین برای بررسی خطاها باید PyErr_Occurred() را فراخوانی کنید.
تغییر یافته در نسخهی 3.8: در صورت وجود، از __index__() استفاده کنید.
-
double PyFloat_AS_DOUBLE(PyObject *pyfloat)¶
نمایش C double از محتویات pyfloat را برمیگرداند، اما بدون بررسی خطا.
-
PyObject *PyFloat_GetInfo(void)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.
یک نمونه از دنباله ساختاری برمیگرداند که اطلاعاتی دربارهی دقت و مقادیر کمینه و بیشینهی یک عدد ممیز شناور در بر دارد. این یک دربرگیرندهی نازک حول پروندهی سرآیند float.h است.
-
double PyFloat_GetMax()¶
- قسمتی از ABI پایدار.
بزرگترین عدد ممیز شناور محدود قابل نمایش DBL_MAX را بهصورت double در C برمیگرداند.
-
double PyFloat_GetMin()¶
- قسمتی از ABI پایدار.
کمترین عدد اعشاری مثبت نرمالشده DBL_MIN را بهصورت double در C برمیگرداند.
-
Py_INFINITY¶
این ماکرو به یک عبارت ثابت از نوع double بسط مییابد که بینهایت مثبت را نشان میدهد.
این معادل کلاندستور INFINITY از سرآیند <math.h> استاندارد C11 است.
-
Py_NAN¶
این ماکرو به عبارت ثابتی از نوع double بسط مییابد که نشاندهندهی مقدار عدد-نیست ساکت (qNaN) است.
در بیشتر پلتفرمها، این معادل ماکروی NAN از سرآیند <math.h> استاندارد C11 است.
-
Py_HUGE_VAL¶
معادل INFINITY است.
-
Py_MATH_E¶
تعریف ثابت math.e (دقیق برای نوع double).
-
Py_MATH_El¶
تعریف با دقت بالا (long double) ثابت e.
منسوخ شده از نسخهی 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).
-
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)¶
اگر عدد ممیز شناور دادهشده X متناهی باشد، یعنی نرمال، زیرنرمال یا صفر باشد، اما بینهایت یا NaN نباشد، 1 را برمیگرداند. در غیر این صورت 0 را برمیگرداند.
-
Py_IS_INFINITY(X)¶
اگر عدد ممیز شناورِ دادهشدهی X بینهایت مثبت یا منفی باشد، 1 را برمیگرداند. در غیر این صورت 0 را برمیگرداند.
-
Py_IS_NAN(X)¶
اگر عدد ممیز شناورِ دادهشدهی X مقداری غیرعددی (NaN) باشد، 1 را برمیگرداند. در غیر این صورت 0 را برمیگرداند.
توابع بستهبندی و باز کردن بستهبندی¶
توابع pack و unpack روشی کارآمد و مستقل از پلتفرم برای ذخیرهسازی مقادیر ممیز شناور به صورت رشتههای بایتی فراهم میکنند. روالهای Pack یک رشتهی bytes از یک double در زبان C تولید میکنند و روالهای Unpack یک double در زبان C را از چنین رشتهی bytesی به دست میآورند. پسوند (۲، ۴ یا ۸) تعداد بایتها را در رشتهی bytes مشخص میکند:
فرمت ۲ بایتی، فرمت دقت نیمهی binary16 استاندارد IEEE 754 است.
فرمت ۴ بایتی، فرمت دقت تک (single-precision) استاندارد IEEE 754 binary32 است.
فرمت ۸ بایتی، فرمت ممیز شناور با دقت مضاعف binary64 استاندارد IEEE 754 است.
نوع NaN ممکن است روی برخی از پلتفرمها هنگام بازکردن بسته حفظ نشود (مقادیر signaling NaN به quiet NaN تبدیل میشوند)، برای مثال روی سیستمهای x86 در حالت ۳۲ بیتی.
فرض بر این است که نوع double دارای فرمت ممیز شناور با دقت مضاعف binary64 استاندارد IEEE 754 است. این که اگر این طور نباشد چه اتفاقی میافتد تا حدی اتفاقی است (متأسفانه). روی پلتفرمهای غیر IEEE با دقت بیشتر یا بازهی پویای بزرگتر نسبت به آن چه IEEE 754 پشتیبانی میکند، همهی مقادیر را نمیتوان بستهبندی کرد؛ و روی پلتفرمهای غیر IEEE با دقت کمتر یا بازهی پویای کوچکتر، همهی مقادیر را نمیتوان باز کرد. بستهبندی اعداد خاص مانند INFها و NaNها (اگر چنین چیزهایی روی پلتفرم وجود داشته باشد) ممکن است به درستی مدیریت نشود و تلاش برای بازکردن بستهی یک رشتهی bytes حاوی یک INF یا NaN استاندارد IEEE ممکن است باعث بروز یک استثنا شود.
اضافه شده در نسخهی 3.11.
توابع بستهبندی¶
روالهای بستهبندی کردن ۲، ۴ یا ۸ بایت را از p به بعد مینویسند. le یک آرگومان int است، و اگر رشتهی بایتها را در قالب کوچکاندیان (توان در انتها، در p+1، p+3، یا p+6 و p+7) بخواهید غیرصفر است، و اگر قالب بزرگاندیان (توان در ابتدا، در p) را بخواهید صفر است. از ثابت PY_LITTLE_ENDIAN برای انتخاب اندیان بومی استفاده کنید: این ثابت روی پردازندهی بزرگاندیان برابر با 0، و روی پردازندهی کوچکاندیان برابر با 1 است.
مقدار بازگشتی: 0 در صورت موفقیت، -1 در صورت خطا (و استثنا تنظیمشده است، به احتمال زیاد OverflowError).
-
int PyFloat_Pack2(double x, char *p, int le)¶
یک ممیز شناور با دقت مضاعف در C را به قالب binary16 با دقت نصف IEEE 754 بستهبندی میکند.
-
int PyFloat_Pack4(double x, char *p, int le)¶
یک ممیز شناور با دقت مضاعف در C را به قالب IEEE 754 binary32 با دقت منفرد بستهبندی میکند.
-
int PyFloat_Pack8(double x, char *p, int le)¶
یک double زبان C را به قالب دقت مضاعف binary64 استاندارد IEEE 754 بستهبندی میکند.
توابع واگشایی¶
روالهای بازکردن بسته ۲، ۴ یا ۸ بایت را با شروع از p میخوانند. آرگومان le یک آرگومان از نوع int است، و اگر رشتهی بایتها در قالب کوچکاندیان باشد (توان در آخر، در p+1، p+3 یا p+6 و p+7) ناصفر، و اگر در قالب بزرگاندیان باشد (توان در اول، در p) صفر است. از ثابت PY_LITTLE_ENDIAN برای انتخاب ترتیب بایتهای بومی استفاده کنید: این ثابت روی پردازندهی بزرگاندیان برابر با 0، و روی پردازندهی کوچکاندیان برابر با 1 است.
مقدار بازگشتی: ممیز شناور با دقت مضاعفِ واگشاییشده. در صورت خطا، این مقدار -1.0 است و PyErr_Occurred() درست است (و استثنایی تنظیمشده است که به احتمال زیاد OverflowError است).
-
double PyFloat_Unpack2(const char *p, int le)¶
قالب IEEE 754 binary16 با دقت نصف را بهصورت یک double در C واگشایی میکند.
-
double PyFloat_Unpack4(const char *p, int le)¶
واگشایی کردن قالب دقت منفرد binary32 از IEEE 754 بهصورت double در C.
-
double PyFloat_Unpack8(const char *p, int le)¶
قالب دقت مضاعف binary64 در استاندارد IEEE 754 را بهصورت یک double در C واگشایی میکند.
©
حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است.
مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند.
برای اطلاعات بیشتر به
تاریخچه و مجوز مراجعه کنید.
بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است.
لطفاً کمک مالی کنید.
آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC).
آیا
اشکالی یافتید؟
ساخته شده با
Sphinx 9.1.0.