By GokiSoft.Com| 21:38 05/06/2020|
Tài Liệu PHP

PHP Numbers

Trong bài này chúng ta sẽ cùng tìm hiểu về các kiểu dữ liệu Integers, Floats, và Number Strings.


PHP Numbers

Một điều cần chú ý về PHP là nó chuyển đổi kiểu dữ liệu tự động.

Vì vậy, nếu bạn gán một giá trị nguyên cho một biến, loại biến đó sẽ tự động là một số nguyên. Sau đó, nếu bạn gán một chuỗi cho cùng biến đó, nó sẽ thay đổi thành một chuỗi.


PHP Integers - Số nguyên

2, 256, -256, 10358, -179567 là các số nguyên - integer. Còn 7.56, 10.0, 150.67 là số thập phân - float.

Kiểu dữ liệu Integer là một số nguyên trong khoảng -2,147,483,648 và 2,147,483,647. Giá trị lớn hơn (hoặc thấp hơn) so với giá trị này sẽ được lưu trữ dưới dạng float, bởi vì nó vượt quá giới hạn của một số nguyên.

Một điều quan trọng cần biết là ngay cả khi 4 * 2.5 là 10, kết quả vẫn được lưu trữ dưới dạng float, bởi vì một trong các toán hạng là một 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ác dạng: decimal (hệ 10), hexadecimal (hệ 16), octal (hệ 8), hoặc binary (hệ 2).

PHP có các hàm sau để kiểm tra xem loại biến có phải là số nguyên không:

  • is_int()
  • is_integer()
  • is_long()

Ví dụ

Kiểm tra xem loại biến có phải là số nguyên không:

<?php
$x = 5985;
var_dump(is_int($x));

$x = 59.85;
var_dump(is_int($x));
?>

PHP Floats

Float là một số bao gồm cả số có dấu thập phân.

2.0, 256.4, 10.358, 7.64E+5, 5.56E-5 đều là float.

Kiểu dữ liệu float thường có thể lưu trữ một giá trị lên đến 1.7976931348623E+308, và có độ chính xác tối đa là 14 chữ số.

PHP có các hàm sau để kiểm tra xem loại biến có phải là float không:

  • is_float()
  • is_double()

Ví dụ

Kiểm tra xem loại của biến là float không:

<?php
$x = 10.365;
var_dump(is_float($x));
?>

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 một giá trị số là hữu hạn hay vô hạn:

  • is_finite()
  • is_infinite()

Tuy nhiên, ta hay sử dụng hàm tổng qua var_dump() trả về kiểu dữ liệu (data type) và giá trị (value):

Ví dụ

Kiểm tra xem một giá trị số là hữu hạn hay vô hạn:

<?php
$x = 1.9e411;
var_dump($x);
?>

PHP NaN

NaN là viết tắt của Not a Number - Không phải số.

PHP có các chức năng sau để kiểm tra xem giá trị không phải là số:

Tuy nhiên, ta hay sử dụng hàm tổng qua var_dump() trả về kiểu dữ liệu (data type) và giá trị (value):

Ví dụ

Tính toán không hợp lệ sẽ trả về giá trị NaN:

<?php
$x = acos(8);
var_dump($x);
?>

PHP Numerical Strings - Chuỗi số

Hàm PHP is_numeric() có thể được sử dụng để tìm xem một biến có phải là số không. Hàm trả về true nếu biến là một số hoặc một chuỗi số, false nếu không.

Ví dụ

Kiểm tra xem biến có phải là số không:

<?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));
?>

Note: 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 - hexa (vd. 0xf4c3b00c), vì chúng không còn được coi là chuỗi số.


PHP Cast Chuỗi và Float thành Integer

(int), (integer), hoặc hàm intval() thường được sử dụng để chuyển đổi một giá trị thành một số nguyên.

Ví dụ

Cast float và chuỗi thành số nguyên:

<?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;
?>