نوع داده اعشاری در PHP بهطور مستقیم وجود ندارد، اما برای ذخیره و پردازش اعداد اعشاری میتوان از نوع داده float (که به آن double هم گفته میشود) استفاده کرد. این نوع داده برای نمایش و محاسبه اعداد اعشاری و اعشاری بزرگ کاربرد دارد. در این آموزش، از سری مقاله های مجله پی استور با نوع داده اعشاری در PHP آشنا میشوید. نوع داده اعشاری در PHP برای نمایش و کار با اعداد اعشاری یا اعداد با نماد علمی استفاده میشود.
مقدمه
نوع داده اعشاری در PHP مقادیر عددی را با رقمهای اعشاری نمایش میدهد و اغلب با نامهای float، double یا اعداد حقیقی شناخته میشود. این نوع داده، مانند اعداد صحیح (integer)، محدوده مشخصی دارد که به پلتفرمی که PHP روی آن اجرا میشود بستگی دارد. نوع داده اعشاری در PHP میتواند مقادیر را در قالبهای مختلفی شناسایی کند، از جمله اعداد اعشاری معمولی، نماد علمی (اعداد نمایی) و اعداد اعشاری با دقت بالا، که در محاسبات ریاضی و علمی کاربرد دارند.
۱.۲۵ ۳.۱۴ -۰.۱
PHP همچنین از اعداد ممیز شناور در نماد علمی «Scientific Notation» پشتیبانی میکند.
۰.125E1 // 0.125 * 10^1 or 1.25
از نسخه ۷.۴ به بعد، PHP اجازه میدهد که از خط فاصله (_) در اعداد اعشاری برای قابل خواندنتر کردن اعداد طولانی استفاده کنید. به عنوان مثال:
1_234_457.۸۹
ویژگی های نوع داده اعشاری در PHP
- میتواند اعداد اعشاری مثل ۳.۱۴، -۰.۰۰۱ یا اعداد بزرگ علمی مثل ۱.2e3 را ذخیره کند.
- دقت محاسبات اعشاری ممکن است محدود باشد، زیرا این اعداد در حافظه بهصورت تقریبی ذخیره میشوند.
- برای عملیات دقیقتر (مثل امور مالی) استفاده از کتابخانههای عددی مانند BCMath یا GMP توصیه میشود.
- برای عملیات مالی یا زمانی که به دقت بسیار بالا نیاز است، بهتر است از رشتههای عددی یا ابزارهای اختصاصی استفاده کنی، چون نوع دادهی اعشاری ممکن است خطاهای گردشی داشته باشد.
تفاوت خاصی وجود ندارد، زیرا هر دو به یک نوع داده اشاره میکنند. PHP از هر دو اصطلاح بهطور متناوب استفاده میکند تا اعداد اعشاری «floating-point numbers» را توصیف کند. با این حال، چند نکته برای درک بهتر وجود دارد:
اصطلاحات یکسان در PHP
- در PHP، نوع داده float استاندارد است.
- گاهی از اصطلاح double در مستندات یا منابع قدیمی استفاده میشود، اما در عمل، هر دو به یک مفهوم اشاره دارند.
زبانهای دیگر
در برخی زبانهای برنامهنویسی (مثل C یا Java)، تفاوت واقعی بین float و double وجود دارد:
- float: دقت کمتر و معمولاً ۳۲ بیت.
- double: دقت بیشتر و معمولاً ۶۴ بیت.
اما در PHP، تنها یک نوع داده برای اعداد اعشاری وجود دارد که دقت و ذخیرهسازی آن وابسته به پیادهسازی زبان (معمولاً مطابق با استاندارد IEEE 754) است.
نمایش در PHP
- برای اطمینان از نوع متغیر میتوان از تابع ()gettype یا ()var_dump استفاده کرد. در هر دو حالت، نوع داده بهعنوان float نمایش داده میشود.
- در PHP، هیچ تفاوت فنی بین float و double وجود ندارد و هر دو به یک نوع داده اشاره میکنند. استفاده از اصطلاح float رایجتر است و برای اعداد اعشاری استفاده میشود.
چرا دقت اعداد اعشاری در PHP مهم است؟
از آنجا که کامپیوتر نمیتواند اعداد ممیز شناور را بهطور دقیق نمایش دهد، تنها میتواند از تقریبهای مختلف برای نمایش این اعداد استفاده کند.
برای مثال، نتیجهی عملیات ۰.۱ + ۰.۱ + ۰.۱ برابر با ۰.۲۹۹۹۹۹۹۹۹… خواهد بود، نه ۰.۳. این بدین معنی است که باید در مقایسهی دو عدد ممیز شناور با استفاده از عملگر == دقت کنید.
مثال زیر نتیجهی false را برمیگرداند که ممکن است آنطور که انتظار داشتید نباشد:
<?php $total = 0.1 + 0.1 + 0.1; echo $total == 0.3; // return false
تست و گرد کردن یک float در PHP
برای بررسی اینکه آیا یک مقدار از نوع عدد اعشاری است یا نه، میتوان از توابع ()is_float یا ()is_real در PHP استفاده کرد. تابع ()is_float در صورتی که آرگومان آن یک عدد ممیز شناور باشد، مقدار `true` را برمیگرداند و در غیر این صورت مقدار `false` را بازمیگرداند. این تابع به ویژه در مواقعی که نیاز به تشخیص نوع داده و انجام عملیات خاص بر روی اعداد اعشاری داریم، مفید است.
مثال:
echo is_float(0.5);
خروجی :
۱
نتیجه گیری
نوع داده اعشاری در PHP برای ذخیرهسازی و مدیریت اعداد با بخش اعشاری به کار میرود و در بسیاری از محاسبات عددی و مالی مورد استفاده قرار میگیرد. این نوع داده انعطافپذیری بالایی در نمایش اعداد واقعی دارد و میتواند مقادیر بسیار کوچک یا بزرگ را با دقت نسبی نمایش دهد.
با این حال، باید توجه داشت که به دلیل محدودیتهای محاسباتی کامپیوتر، عملیات روی اعداد اعشاری ممکن است با خطاهای گرد کردن همراه باشد، به ویژه در مواردی که دقت بالایی مورد نیاز است. به همین دلیل، برای کاربردهای حساس، مانند محاسبات مالی دقیق، استفاده از کتابخانههایی مانند BCMath یا GMP توصیه میشود. به طور کلی، نوع داده float ابزار قدرتمندی برای برنامهنویسان PHP فراهم میکند، اما در استفاده از آن باید دقت کافی به عمل آید.