PHP:مقادیر عددی در PHP

از ویکی کد
پرش به ناوبری پرش به جستجو

در این فصل، ما نگاه عمیق‌تری به مقادیر اعداد صحیح، اعشاری و اعداد رشته‌ای (متنی) خواهیم داشت. [۱]

مقادیر عددی در PHP

چیزی که می‌بایست به آن توجه داشته باشید این است که PHP به صورت خودکار تبدیل نوع داده‌ها را انجام می‌دهد.

بنابراین، اگر شما یک متغیر را با یک مقدار عدد صحیح مقدار دهی کنید، نوع آن متغیر به صورت خودکار از نوع صحیح خواهد بود، اگر شما همان متغیر را با مقدار رشته‌ای (متنی) مقداردهی کنید، نوع متغیر به رشته‌ای (متنی) تغییرخواهد کرد.

تبدیل خودکار نوع داده‌ها ممکن است موجب بروز مشکل در کد شما شود.

مقادیر صحیح در PHP

یک عدد صحیح، عددی بدون اعشار است.

-۱۷۹۵۶۷ ،۱۰۳۵۸، -۲۵۶ ،۲۵۶ ،۲ از نوع صحیح هستند در حالی که ۱۵۰٫۶۷، ۱۰٫۰، ۷٫۵۶ از نوع اعشاری هستند.

بنابراین، یک نوع داده صحیح (به انگلیسی: Integer) یک عدد بدون اعشار بین -۲۱۴۷۴۸۳۶۴۸ و ۲۱۴۷۴۸۳۶۴۷ است. مقداری بزرگتر (و یا کوچکتر) از این، به عنوان عدد اعشاری float ذخیره می‌شود، زیرا که محدودیت یک عدد صحیح را نقض می‌کند.

نکته مهم دیگر این است که حتی نتیجه عبارت ۲٫۵*۴ که می‌شود ۱۰، به عنوان داده‌ای اعشاری ذخیره می‌شود زیرا که عملگر اول (۲٫۵)از نوع اعشاری است.

در زیر به برخی از قوانین این نوع داده اشاره می‌کنیم:

  • یک مقدار از نوع عدد صحیح، می‌بایست حداقل یک رقم داشته باشد
  • یک مقدار صحیح نباید قسمت اعشاری داشته باشد
  • یک عدد صحیح می‌تواند، مثبت یا منفی باشد
  • اعداد صحیح را می‌توان به سه صورت مشخص کرد: دسیمال (مبنای ۱۰)، هگزا دسیمال (مبنای ۱۶ با پیشوند ۰x) یا مبنای ۸ (با پیشوند ۰)

PHP توابع زیر را برای بررسی اینکه آیا یک متغیر از نوع عددصحیح (به انگلیسی: Integer) است، دارد:

  • is_int()
  • توابع is_integer() - نام مستعار تابع is_int()
  • توابع is_long() - نام مستعار تابع is_int()

مثال

در مثال زیر، بررسی می‌شود که آیا یک متغیر از نوع عدد صحیح است:

1 <?php
2 $x = 5985;
3 var_dump(is_int($x));
4 
5 $x = 59.85;
6 var_dump(is_int($x));
7 ?>

اعداد اعشاری (float) در PHP

یک داده float یک عدد اعشاری و یا یک عدد در قالب عدد علمی است.

تمام ۲٫۰، ۲۵۶٫۴، ۱۰٫۳۵۸، ۷٫۶۴E+۵ ،۵٫۵۶E-۵ از نوع اعشاری هستند.

نوع داده اعشاری می‌تواند مقداری تا ۱٫۷۹۷۶۹۳۱۳۴۸۶۲۳E+۳۰۸ (را با توجه به پلتفرم) ذخیره کند و این نوع داده، دارای دقت حداکثر ۱۴ اعشار است.

PHP توابع زیر را برای بررسی اینکه آیا یک متغیر از نوع اعشاری است دارد:

  • is_float()
  • is_double() - نام مستعار تابع is_float()

مثال

مثال زیر، بررسی می‌کند که آیا یک متغیر از نوع float است یا نه:

1 <?php
2 $x = 10.365;
3 var_dump(is_float($x));
4 ?>

مقدار بی‌نهایت (به انگلیسی: Infinity) درPHP

مقدار عددی که بزرگتر از PHP_FLOAT_MAX باشد به عنوان بی‌نهایت در نظر گرفته می‌شود.

PHP توابعی برای بررسی اینکه آیا یک مقدار عددی در محدوده بی‌نهایت است یا نه، دارد:


  • is_finite()
  • is_infinite()

اما، تابع var_dump() مقدار و نوع داده را برمی‌گرداند:

مثال

مثال زیر بررسی می‌کند که آیا یک مقدر عددی در محدوده بی‌نهایت است یا خیر:

1 <?php
2 $x = 1.9e411;
3 var_dump($x);
4 ?>

NaN در PHP

NaN (سرواژهٔ: Not a number به معنای عدد نیست) است.


NaN برای عملیات‌های ریاضی غیرممکن استفاده می‌شود.

PHP توابع زیر را برای بررسی اینکه آیا یک مقدار عدد است یا نه، دارد:


  • is_nan()

اما، تابع var_dump() مقدار و نوع داده را برمی‌گرداند:

مثال

عملیات ریاضی نامعتبر مقدار NaN را برمی‌گرداند:

1 <?php
2 $x = acos(8);
3 var_dump($x);
4 ?>

مقادیر عدد متنی

از تابع is_numeric() می‌توان برای فهمیدن اینکه آیا یک متغیر از نوع عددی است یا خیر، استفاده کرد. این تابع درصورتی متغیر از نوع عددی یا عدد متنی باشد مقدار true و در غیراینصورت مقدار false را برمی‌گرداند.

مثال

مثال زیر بررسی می‌کند که آیا یک متغیر از نوع عددی است یا نه:

 1 <?php
 2 $x = 5985;
 3 var_dump(is_numeric($x));
 4 
 5 $x = "5985";
 6 var_dump(is_numeric($x));
 7 
 8 $x = "59.85" + 100;
 9 var_dump(is_numeric($x));
10 
11 $x = "Hello";
12 var_dump(is_numeric($x));
13 ?>


تبدیل مقادیر رشته‌ای (متنی) و اعشاری به نوع صحیح (به انگلیسی: Integer)

گاهی اوقات شما نیاز دارید که یک مقدار عددی را به یک نوع داده دیگر تبدیل کنید.

تابع (int) , (integer)، یا intval() اغلب برای تبدیل یک مقدار به یک مقدار صحیح استفاده می‌شوند.

مثال

تبدیل مقادیر اعشاری، متنی به نوع صحیح:

 1 <?php
 2 // Cast float to int
 3 $x = 23465.768;
 4 $int_cast = (int)$x;
 5 echo $int_cast;
 6 
 7 echo "<br>";
 8 
 9 // Cast string to int
10 $x = "23465.768";
11 $int_cast = (int)$x;
12 echo $int_cast;
13 ?>

منابع آموزشی