Số PHP
Trong chương này chúng ta sẽ tìm hiểu sâu về Số nguyên, Số thực và Chuỗi số.
Số PHP
Có ba loại số chính trong PHP:
-
Integer
-
Float
-
Number Strings
Ngoài ra, PHP còn có thêm 2 kiểu dữ liệu dùng cho số:
-
Infinity
-
NaN
Các biến kiểu số được tạo khi bạn gán giá trị cho chúng:
Ví dụ
$a = 5;
$b = 5.34;
$c = "25";
Để xác minh loại của bất kỳ đối tượng nào trong PHP, hãy sử dụng hàm var_dump()
:
Số nguyên PHP
2, 256, -256, 10358, -179567 đều là số nguyên.
Số nguyên là số không có phần thập phân.
Kiểu dữ liệu số nguyên là số không thập phân trong khoảng từ -2147483648 đến 2147483647 trong hệ thống 32 bit và từ -9223372036854775808 đến 9223372036854775807 trong hệ thống 64 bit. Giá trị lớn hơn (hoặc thấp hơn) giá trị này sẽ được lưu dưới dạng float vì nó vượt quá giới hạn của số nguyên.
Lưu ý: Một điều quan trọng khác cần biết là ngay cả khi 4 * 2.5 là 10, kết quả vẫn được lưu dưới dạng float, vì một trong các toán hạng là float (2.5).
Dưới đây là một số quy tắc cho số nguyên:
- Một số nguyên phải có ít nhất một chữ số
- Một số nguyên KHÔNG được có dấu thập phân
- Một số nguyên có thể là dương hoặc âm
- Số nguyên có thể được chỉ định theo ba định dạng: thập phân (cơ sở 10), thập lục phân (cơ sở 16 - có tiền tố là 0x), bát phân (cơ sở 8 - có tiền tố là 0) hoặc nhị phân (cơ sở 2 - có tiền tố là 0b)
PHP có các hằng số được xác định trước sau đây cho số nguyên:
-
PHP_INT_MAX
- Số nguyên lớn nhất được hỗ trợ -
PHP_INT_MIN
- Số nguyên nhỏ nhất được hỗ trợ -
PHP_INT_SIZE
- Kích thước của một số nguyên tính bằng byte
PHP có các hàm sau để kiểm tra xem loại biến có phải là số nguyên hay không:
-
is_int()
-
is_integer()
- bí danh củais_int()
-
is_long()
- bí danh củais_int()
Ví dụ
Kiểm tra xem loại biến có phải là số nguyên không:
$x = 5985;
var_dump(is_int($x));
$x = 59.85;
var_dump(is_int($x));
Hãy tự mình thử » Phao PHP
Số float là một số có dấu thập phân hoặc số ở dạng hàm mũ.
2.0, 256.4, 10.358, 7.64E+5, 5.56E-5 đều là số float.
Kiểu dữ liệu float thường có thể lưu trữ giá trị lên tới 1.7976931348623E+308 (phụ thuộc vào nền tảng) và có độ chính xác tối đa là 14 chữ số.
PHP có các hằng số được xác định trước sau đây cho số float (từ PHP 7.2):
-
PHP_FLOAT_MAX
- Số dấu phẩy động lớn nhất có thể biểu thị -
PHP_FLOAT_MIN
- Số dấu phẩy động dương nhỏ nhất có thể biểu thị -
PHP_FLOAT_DIG
- Số chữ số thập phân có thể được làm tròn thành số float và ngược lại mà không mất độ chính xác -
PHP_FLOAT_EPSILON
- Số dương x nhỏ nhất có thể biểu thị, sao cho x + 1.0 != 1.0
PHP có các hàm sau để kiểm tra xem loại biến có phải là float hay không:
-
is_float()
-
is_double()
- bí danh củais_float()
Ví dụ
Kiểm tra xem loại biến có phải là float hay không:
$x = 10.365;
var_dump(is_float($x));
Hãy tự mình thử »PHP vô cực
Giá trị số lớn hơn PHP_FLOAT_MAX
được coi là vô hạn.
PHP có các hàm sau để kiểm tra xem giá trị số là hữu hạn hay vô hạn:
Tuy nhiên, hàm PHP var_dump()
trả về kiểu dữ liệu và giá trị:
Ví dụ
Kiểm tra xem một giá trị số là hữu hạn hay vô hạn:
$x = 1.9e411;
var_dump($x);
Hãy tự mình thử »PHP NaN
NaN
là viết tắt của Không phải là số.
NaN
được sử dụng cho các phép toán không thể thực hiện được.
PHP có các hàm sau để kiểm tra xem giá trị có phải là số hay không:
Tuy nhiên, hàm PHP var_dump()
trả về kiểu dữ liệu và giá trị:
Chuỗi số PHP
Hàm PHP is_numeric()
có thể được sử dụng để tìm xem một biến có phải là số hay không. Hàm trả về true nếu biến là số hoặc chuỗi số, ngược lại là false.
Ví dụ
Kiểm tra xem biến có phải là số không:
$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));
Hãy tự mình thử » Lưu ý: Từ PHP 7.0: Hàm is_numeric()
sẽ trả về FALSE cho các chuỗi số ở dạng thập lục phân (ví dụ: 0xf4c3b00c), vì chúng không còn được coi là chuỗi số.
Truyền chuỗi và số float trong PHP thành số nguyên
Đôi khi bạn cần truyền một giá trị số vào một kiểu dữ liệu khác.
Các hàm (int)
, (integer)
và intval()
thường được sử dụng để chuyển đổi một giá trị thành số nguyên.
Ví dụ
Truyền float và chuỗi thành số nguyên:
// 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;
Hãy tự mình thử »Tìm hiểu thêm về cách truyền trong chương Truyền PHP .