آموزش اعداد در php
در این فصل، ما به طور عمیق، به بررسی اعداد صحیح(Integers) و اعداد ممیز شناور(Floats) و رشته های عددی(Number Strings) می پردازیم.
عددها در php
یکی از چیزهایی که باید در مورد php بدانیم، این است که php، تبدیل اتوماتیک نوع داده ها را برای ما به ارمغان می آورد. بنابراین اگر ما یک مقدار صحیح(integer) را به یک متغیر انتساب دهیم، نوع این متغیر به طور اتوماتیک صحیح(integer) خواهد بود. سپس اگر ما یک رشته(string) را به همین متغیر انتساب دهیم، نوع متغیر رشته(string) خواهد شد. این تبدیل اتوماتیک گاهی اوقات می تواند باعث ایجاد شکست در کدها شود.
اعداد صحیح یا Integer در php
اعداد زیر همگی صحیح(Integer) هستند:
- 2
- 256
- 256-
- 10358
- 179567-
عدد صحیح(integer) به عددی گفته می شود که بخش اعشاری نداشته باشد. نوع داده ی integer در حقیقت یک عدد بدون اعشار(non-decimal) است که در سیستم های 32 بیتی بین 2147483648- و 2147483647 است و در سیستم های 64 بیتی، بین 9223372036854775808- و 9223372036854775807 است. هر مقداری که بیشتر یا کمتر از این محدوده ها باشد، به صورت یک عدد ممیز شناور(float) ذخیره می شود، زیرا از حد(limit) یک عدد صحیح تجاوز کرده است.
نکته: یک نکته ی مهم دیگر که باید بدانیم این است: می دانید که 2.5*4 برابر است با 10، اما این نتیجه به صورت یک عدد ممیز شناور(float) در نظر گرفته می شود، زیرا یکی از عملوندهای آن یعنی 2.5 یک عدد ممیز شناور(float) است.
برخی از قواعد اعداد صحیح عبارتند از:
- یک عدد صحیح حداقل باید یک رقم داشته باشد.
- یک عدد صحیح نباید ممیز یا نقطه ی اعشار داشته باشد.
- یک عدد صحیح می تواند مثبت یا منفی باشد.
- اعداد صحیح می تواند به سه صورت مشخص شوند: دسیمال(مبنای 10)، هگزادسیمال(مبنای 16 با پیشوند 0x) و اکتال(مبنای 8 با پیشوند 0).
زبان php چند ثابت(constant) از پیش تعریف شده برای اعداد صحیح دارد که عبارتند از:
- PHP_INT_MAX بزرگ ترین عدد صحیح پشتیبانی شده.
- PHP_INT_MIN کوچک ترین عدد صحیح پشتیبانی شده.
- PHP_INT_SIZE سایز یک عدد صحیح به بایت
php از تابع های زیر برا بررسی اینکه آیا نوع یک متغیر، صحیح(integer) است یا نه، استفاده می کند:
- is_int()
- is_integer() - alias of is_int()
- is_long() - alias of is_int()
مثال: بررسی اینکه آیا نوع متغیر مورد نظر صحیح(integer) هست یا نه:
<!DOCTYPE html>
<html>
<body>
<?php
// Check if the type of a variable is integer
$x = 5985;
var_dump(is_int($x));
echo "<br>";
// Check again...
$x = 59.85;
var_dump(is_int($x));
?>
</body>
</html>
نتیجه:
bool(true)
bool(false)
اعداد ممیز شناور یا Float در php
یک عدد ممیز شناور، در حقیقت عددی است که نقطه ی(ممیز) اعشار داشته باشد و یا اینکه به شکل نمائی(exponential form) باشد. اعداد زیر ممیز شناور هستند:
- 2.0
- 256.4
- 10.358
- 7.64E+5
- 5.56E-5
نوع داده ی ممیز شناور(float) معمولاً می تواند یک مقدار تا حدود 1.7976931348623E+308 را ذخیره کند(بسته به پلتفرم) و می تواند ماکزیمم دقت 14 رقم داشته باشد.
زبان php از ثابت های از پیش تعریف شده ی زیر برای اعداد ممیز شناور استفاده می کند(از پی اچ پی 7.2 به بعد):
- PHP_FLOAT_MAX - بزرگترین عدد ممیز شناور قابل استفاده.
- PHP_FLOAT_MIN - کوچکترین عدد مثبت ممیز شناور قابل ارائه
- - PHP_FLOAT_MAX - کوچکترین عدد منفی ممیز شناور قابل ارائه
- PHP_FLOAT_DIG - تعداد رقم های اعشاری که می تواند به یک عدد ممیز شناور گرد شود و برگردد.
- PHP_FLOAT_EPSILON - کوچکترین عدد مثبت قابل ارائه ی x به طوری که x + 1.0 != 1.0
برای اینکه بررسی کنیم که آیا یک متغیر، ممیز شناور است یا نه، php توابع زیر را دارد:
- is_float()
- is_double() - مستعار is_float()
مثال: بررسی اینکه یک متغیر ممیز شناور(float) است یا نه:
<!DOCTYPE html>
<html>
<body>
<?php
// Check if the type of a variable is float
$x = 10.365;
var_dump(is_float($x));
?>
</body>
</html>
نتیجه:
bool(true)
بی نهایت(Infinity) در php
یک مقدار عددی، که از PHP_FLOAT_MAX بیشتر باشد، به صورت بی نهایت(infinite) در نظر گرفته می شود. php از توابع زیر برای بررسی اینکه آیا یک مقدار عددی، بی نهایت(infinite) است یا اینکه محدود و نهایت دار(finite) است، استفاده می کند:
- is_finite()
- is_infinite()
اما تابع var_dump() در php، نوع داده و مقدار آن را برمی گرداند:
مثال: بررسی اینکه آیا یک مقدار عددی، بی نهایت است، یا اینکه نهایت دارد:
<!DOCTYPE html>
<html>
<body>
<?php
// بررسی اینکه آیا یک عدد نهایت دارد یا بی نهایت است
$x = 1.9e411;
var_dump($x);
?>
</body>
</html>
نتیجه:
float(INF)
مقدار NaN در php
NaN به معنی عدد نیست یا Not a Number می باشد. از مقدار NaN برای عملیات غیر ممکن ریاضی استفاده می شود. php از توابع زیر برای بررسی اینکه آیا یک مقدار عدد است یا اینکه عدد نیست( NaN نیست) استفاده می کند:
- is_nan()
اما تابع var_dump() در php نیز نوع داده و مقدار یک متغیر را برمی گرداند:
مثال: محاسبه ی نامعتبر می تواند باعث شود که یک مقدار NaN برگردانده شود:
<!DOCTYPE html>
<html>
<body>
<?php
// Invalid calculation will return a NaN value
$x = acos(8);
var_dump($x);
?>
</body>
</html>
نتیجه:
float(NAN)
رشته های عددی در php
از تابع پی اچ پی is_numeric() می توانیم برای فهمیدن اینکه آیا یک متغیر عددی(numeric) است یا نه استفاده کنیم. اگر متغیر مورد نظر یک عدد یا یک رشته ی عددی باشد، این تابع مقدار true را برمی گرداند، در غیر این صورت، مقدار false را برمی گرداند.
مثال: بررسی اینکه آیا مقدار یک متغیر، عددی(numeric) است یا نه:
<?php
$x = 5985;
var_dump(is_numeric($x));
$x = "5985";
var_dump(is_numeric($x));
$x = "59.85" + 100;
var_dump(is_numeric($x));
$x = "Hello";
var_dump(is_numeric($x));
?>
نتیجه:
bool(true)
bool(true)
bool(true)
bool(false)
نکته: از php 7.0 به بعد، تابع is_numeric() برای رشته های عددی به فرم هگزادسیمال( مثل 0xf4c3b00c )مقدار FALSE را برمی گرداند؛ زیرا این رشته ها دیگر به صورت رشته های عددی در نظر گرفته نمی شوند.
تبدیل نوع داده های(Casting) رشته ها و اعداد ممیز شناور به اعداد صحیح
گاهی اوقات نیاز داریم تا یک مقدار عددی(numerical) را به یک نوع داده ی دیگر تبدیل کنیم. برای تبدیل یک مقدار به یک عدد صحیح، می توانیم از (int) و (integer) و intval() استفاده کنیم.
مثال: تبدیل عدد ممیز شناور(float) و رشته(string) به عدد صحیح(integer) :
<!DOCTYPE html>
<html>
<body>
<?php
// Cast float to int
$x = 23465.768;
$int_cast = (int)$x;
echo $int_cast;
echo "<br>";
// Cast string to int
$x = "23465.768";
$int_cast = (int)$x;
echo $int_cast;
?>
</body>
</html>
نتیجه:
23465
23465
دیدگاهها
be shared across the web. Thank you