در برنامهنویسی همیشه با اعداد سروکار داریم. اعداد در PHP به دو دسته کلی صحیح و اعشاری تقسیم میشوند. توابع ریاضی مختلفی برای کار با عددها در زبان PHP وجود دارد. در این آموزش با اعداد و ۱۸ تابع پرکاربرد آنها آشنا میشویم.
اگر در اوایل راه یادگیری PHP هستید، بهتر است با ساختارهای دادهای و امکاناتی در کار با آنها داریم را یاد بگیرید. در این آموزش موارد مختلفی برای کار با اعداد در PHP گفته میشود که شاید از همه آنها همیشه استفاده نکنید، اما دانستن اینکه چه اختیاراتی دارید، به شما کمک میکند یک برنامهنویس خوب باشید.
فهرست محتوای آموزش
اعداد در PHP
برای ذخیره کردن عددها در PHP مانند بسیاری از زبانهای برنامهنویسی دیگر دو نوع کلی داریم:
- عدد صحیح
- عدد اعشاری
حداقل و حداکثر مقداری که میتوان در این نوعهای عددی قرار داد، بستگی به سیستم اجراکننده برنامه دارد. بنابراین کف و سقف اعداد در سیستم 32 بیتی و 64 بیتی متفاوت است.
علاوه بر این دو نوع، اعداد نامحدود و ناعدد نیز داریم. اعداد نامحدود اعداد بسیار بزرگی هستند که خارج از محدوده مقدار قابل نمایش در حالت صحیح و اعشار باشد. ناعددها نیز به مقادیر مبهم یا اشتباه گفته میشود که معمولاً در محاسبات به آنها برمیخوریم.
در ادامه هر ۴ مورد را به طور جزئیتر یاد میگیریم و در بخش انتهایی چند نمونه از توابع ریاضیاتی عددی در PHP را بررسی میکنیم.
اعداد صحیح
به زبان ساده، عدد صحیح (Integer یا int) عددی است که بخش اعشاری ندارد؛ دقیقاً مشابه چیزی که در ریاضیات خواندهایم. اعداد 2
و 768
و -14895
همگی صحیح هستند.
اعداد صحیح دارای ویژگیهای زیر هستند:
- این اعداد بدون علامت اعشار (
.
) بوده و حداقل باید دارای یک رقم باشند. - میتوانند مثبت، منفی یا صفر باشند.
- اعداد صحیح را میتوان در سه فرمت مختلف تعریف کرد: دهدهی (decimal)، مبنای شانزده (hexadecimal) یا مبنای هشت (octal)
حداقل عددی که میتوان به عنوان integer بر روی سیستم نمایش داد یا ذخیره کرد از متغیر ثابت PHP_INT_MAX
و حداقل مقدار از متغیر PHP_INT_MIN
محاسبه میشود. (ثابت PHP چیست ؟)
برای مثال، مقدار نوع عددی صحیح در PHP روی سیستم 64 بیتی به صورت زیر است:
اعداد خارج از محدوده اعداد صحیح در PHP (بزرگتر از حداکثر یا کوچکتر از حداقل) به عنوان عدد اعشاری ذخیره میشوند.
اعداد اعشاری
عددی که دارای علامت اعشار است یک عدد اعشاری (float) در نظر گرفته میشود. متغیرهای مهم عدد اعشاری در PHP عبارتاند از:
- PHP_FLOAT_MAX : بزرگترین مقدار قابل نمایش به شکل عدد اعشاری را مشخص میکند.
- PHP_FLOAT_MIN : کوچکترین مقدار قابل نمایش به عنوان عدد اعشاری را مشخص میکند.
یک مثال ساده، محاسبه معدل برای چند عدد است. در قطعه کد PHP زیر 3 عدد مختلف داریم. این اعداد را با هم جمع کرده و بر 3 تقسیم میکنیم تا میانگین اعداد به دست بیاید. در نهایت 17.08333
در خروجی چاپ میشود.
<?php
$x = 17;
$y = 14.75;
$z = 19.5;
$sum = $x + $y + $z;
echo $sum/3;
کار با عددها در PHP
برای کار با اعداد در PHP چند تابع کاربردی وجود دارد. همچنین دو نوع عدد نامحدود و ناعدد نیز برای تعریف مقادیر غیر از اعداد صحیح و اعشاری در نظر گرفته شده است.
برای اینکه بررسی کنیم آیا یک متغیر از نوع عدد صحیح است یا خیر، از تابع is_int()
استفاده میکنیم. این تابع یک مقدار را به عنوان ورودی دریافت کرده و به صورت true یا false مشخص میکند که از نوع integer است یا خیر.
<?php
$x = 76954;
is_int($x); // 1 or true
$x = 3.885;
is_int($x); // 0 or false
به عنوان توابع اضافی، میتوان از is_integer()
یا is_long()
نیز برای تشخیص صحیح بودن یک عدد در PHP استفاده کرد. عملکرد این سه تابع شبیه هم است.
به طور مشابه، تابع is_float()
را داریم. این تابع یک مقدار به عنوان ورودی دریافت کرده و با true یا false مشخص میکند که آیا آن مقدار از نوع اعشاری است یا خیر.
<?php
$x = 39.721;
is_float($x); // true
تابع is_double()
نیز عملکرد مشابهی برای تشخیص اعداد اعشاری در PHP دارد.
از توابعی که خروجی آنها به صورت true یا false است میتوان برای کنترل جریان برنامه در عبارات شرطی PHP استفاده کرد.
عدد نامحدود در PHP
اعدادی که بزرگتر از مقدار PHP_FLOAT_MAX
هستند، به عنوان اعداد نامحدود (infinity) شناخته میشوند. در حقیقت چون امکان ذخیرهسازی آنها در سیستمی که در حال اجرای کد PHP شماست وجود ندارد، این اعداد به عنوان بینهایت در نظر گرفته میشوند.
در قطع کد زیر یک عدد خیلی بزرگ را برای سیستم مشخص کردم تا به کمک var_dump()
نوع آن را بررسی کنیم.
<?php
$x = 5.3e444;
var_dump($x);
نتیجه این کد چیزی شبیه خروجی زیر میشود. همانطور که میبینید عدد از نوع float تشخیص داده شده ولی مقدارش INF مخفف infinity است.
float(INF)
دو تابع زیر برای نامحدود بودن یا نبودن اعداد در PHP به کار میروند.
is_finite()
: آیا عدد ورودی محدود است ؟is_infinite()
: آیا عدد ورودی نامحدود است ؟
ناعدد یا NaN
مقدار NaN در PHP (و حتی برخی زبانهای دیگر) مخفف عبارت Not a Number است. این مقدار معمولاً برای نتیجه عملیاتهای ریاضی غیرممکن استفاده میشود. مثلاً فرض کنید بخواهیم مقدار سینوس معکوس عدد 25 را بگیریم. چون بازه سینوس (-1,1)
است، بنابراین نتیجه آن ناممکن بوده و با NaN نشان داده میشود.
<?php
// NaN value
var_dump( asin(25) );
// float(NAN)
از تابع is_nan()
برای بررسی ناعدد بودن یک مقدار در PHP استفاده میشود.
توابع ریاضی اعداد در PHP
مشابه اکثر زبانهای سطح بالای دیگر، در PHP توابع مختلفی برای عملیاتهای ریاضی روی اعداد داریم. این توابع درونی هستند و برای استفاده از آنها نیاز به وارد کردن هیچ کتابخانهای به برنامه نیست.
پرکاربردترین توابع عددی و ریاضی
در جدول زیر ۱۰ تابع پر کاربرد ریاضی برای کار با اعداد PHP را مشاهده میکنید. اگر میخواهید با همه توابع ریاضی آشنا شوید، یک لیست کامل همراه با مثالهای مختلفی در صفحه مستندات آن وجود دارد.
تابع | عملیات |
---|---|
rand() | ایجاد یک عدد تصادفی |
ceil(x) | گرد کردن عدد رو به بالا |
floor(x) | گرد کردن عدد به پایین |
round(x) | گرد کردن عدد |
abs(x) | قدر مطلق عدد |
pow(x, y) | x به توان y |
sqrt(x) | جذر عدد |
min() | پیدا کردن مینیموم |
max() | پیدا کردن ماکزیموم |
نکته: ورودی توابع min و max میتواند تعداد نامحدودی عدد (به صورت آرگومان) یا یک آرایه PHP باشد.
مثال: رند کردن اعداد در PHP
تابع ceil()
یک ورودی عددی میگیرد و مقدار اعشار آن را به بالا گرد میکند. برعکس، تابع floor()
با گرد کردن عدد اعشاری به سمت پایین، مقدار کف عدد را به ما میدهد.
تابع round()
ترکیبی از این دو کار را با هم انجام میدهد. به این صورت که اگر مقدار اعشار عددی بزرگتر یا مساوی 0.5 باشد، عدد را به سمت بالا و در غیر اینصورت به سمت پایین گرد خواهد کرد.
به قطعه کد زیر دقت کنید:
<?php
echo "ceil: ";
echo ceil(2.1) . " ";
echo ceil(2.8) . "<br>";
echo "floor: ";
echo floor(2.1) . " ";
echo floor(2.8) . "<br>";
echo "round: ";
echo round(2.1) . " ";
echo round(2.8);
/* output:
ceil: 3 3
floor: 2 2
round: 2 3
*/
دقت کنید که ورودی این توابع عدد صحیح یا اعشاری است و خروجی آنها همواره یک عدد صحیح (integer) خواهد بود.
امیدوارم در این آموزش به خوبی با اعداد در PHP آشنا شده باشید و بتوانید با توابع ریاضی، عملیاتهای کاربردی روی آنها انجام دهید.
این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش PHP
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
سلام میشه اسم تگ ها رو در php خلاصه وار توضیح دهید
ممنون
سلام
منظورتون از تگها همون
و
هستند؟ اگر آره این دو تگ برای مشخص کردن محدودهٔ کدهای php در یه فایل استفاده میشن. اگر بخواید از html در کنار php استفاده کنید، ممکنه چندین بار نیاز باشه این تگها رو باز کنید و ببندید.
سلام
چطور میتونم تعداد اعشار رو بشمارم؟
با تشکر.
سلام
تا جایی که اطلاع دادم تابع خاصی برای این مورد نداریم.
میتونید بهعنوان یه رشته در نظر بگیرید و با تابع
substr()
و جداکننده.
جدا و طول بخش سمت راستش رو محاسبه کنید.سلام چگونه داده ها را پایگاه داده در php به صورت فیصدی نشان دهیم مثال: 20 و ۱۶ و ۱۳ اینها تعداد عدد های گرفته شده است باید به فیصدی از صد نمایش داده شود اگر لطف کنید ممنون میشویم.
سلام
منظورتون از فیصد همون درصده؟ قاعدتاً محاسبه درصد اینطوره که مقدار رو بر کل تقسیم و در 100 ضرب میکنید. برای علامتشم یه کاراکتر % خودتون کنارش قرار بدید.
سلام چطور باید برای سایت عکس گذاشت در قسمت پروفایل
سلام
سؤالتون خیلی کلیه! اگه از cms خاصی استفاده نمیکنین به نوعی باید با بحثهای جلسات آپلود در PHP و دیتابیس پی اچ پی کار رو پیش ببرید.
سلام خیلی ممنون خیلی خوب مطلب را اموزش دادید
سلام
خیلی خوشحالم که آموزشهامون رو مفید میدونید. موفق باشی علیرضای عزیز 🙂