Hướng dẫn dùng integer limit trong PHP

Bỏ qua các thư viện đặc biệt cho phép bạn làm việc với các số rất lớn, giá trị int lớn nhất mà bạn có thể lưu trữ trong PHP là gì?

  • php
  • integer

127 hữu ích 0 bình luận 133k xem chia sẻ

answer

134

Hướng dẫn dùng integer limit trong PHP

Từ hướng dẫn sử dụng PHP :

Kích thước của một số nguyên phụ thuộc vào nền tảng, mặc dù giá trị tối đa khoảng hai tỷ là giá trị thông thường (đó là 32 bit có dấu). PHP không hỗ trợ số nguyên không dấu. Kích thước số nguyên có thể được xác định bằng cách sử dụng hằng số PHP_INT_SIZE và giá trị tối đa bằng cách sử dụng hằng số PHP_INT_MAX kể từ PHP 4.4.0 và PHP 5.0.5.

Nền tảng 64-bit thường có giá trị tối đa khoảng 9E18, ngoại trừ trên Windows trước PHP 7, nơi luôn là 32 bit.

134 hữu ích 5 bình luận chia sẻ

answer

92

Các bản dựng 32-bit của PHP:

  • Các số nguyên có thể từ -2,147,483,648 đến 2,147,483,647 (~ ± 2 tỷ)

Các bản dựng 64-bit của PHP:

  • Số nguyên có thể từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 (~ ± 9 tạ tỷ)

Các con số được bao gồm.

Lưu ý: một số bản dựng 64-bit đã từng sử dụng số nguyên 32-bit, đặc biệt là các bản dựng Windows cũ hơn của PHP

Các giá trị bên ngoài các phạm vi này được biểu thị bằng các giá trị dấu phẩy động, cũng như các giá trị không phải là số nguyên trong các phạm vi này. Trình thông dịch sẽ tự động xác định thời điểm cần phải chuyển sang dấu phẩy động này dựa trên việc giá trị kết quả của một phép tính không thể được biểu diễn dưới dạng số nguyên hay không.

PHP không hỗ trợ cho các số nguyên "không dấu" như vậy, giới hạn giá trị lớn nhất của tất cả các số nguyên trong phạm vi của một số nguyên "có dấu".

92 hữu ích 1 bình luận chia sẻ

answer

24

Kích thước của các int PHP phụ thuộc vào nền tảng :

Kích thước của một số nguyên phụ thuộc vào nền tảng, mặc dù giá trị tối đa khoảng hai tỷ là giá trị thông thường (đó là 32 bit có dấu). PHP không hỗ trợ số nguyên không dấu. Kích thước số nguyên có thể được xác định bằng cách sử dụng hằng số PHP_INT_SIZE và giá trị tối đa bằng cách sử dụng hằng số PHP_INT_MAX kể từ PHP 4.4.0 và PHP 5.0.5.

PHP 6 thêm "longs" (64 bit ints).

24 hữu ích 3 bình luận chia sẻ

answer

16

(hơi muộn một chút, nhưng có thể hữu ích)

Chỉ tin tưởng PHP_INT_MAX và PHP_INT_SIZE , giá trị này thay đổi tùy theo cung của bạn (32/64 bit) và hệ điều hành của bạn ...

Bất kỳ "phỏng đoán" hoặc "gợi ý" nào khác đều có thể sai.

16 hữu ích 0 bình luận chia sẻ

answer

6

Ah tôi đã tìm thấy nó: 2 32 - 1 (2147483647)

http://au2.php.net/int

Tràn số nguyên

Nếu PHP gặp một số vượt quá giới hạn của kiểu số nguyên, nó sẽ được hiểu là số thực thay thế. Ngoài ra, một phép toán dẫn đến một số vượt quá giới hạn của kiểu số nguyên sẽ trả về một số thực thay thế.

6 hữu ích 1 bình luận chia sẻ

answer

2

Nó phụ thuộc vào hệ điều hành của bạn, nhưng 2147483647 là giá trị thông thường, theo hướng dẫn sử dụng .

2 hữu ích 1 bình luận chia sẻ

answer

1

Nó phụ thuộc vào kiến ​​trúc của máy chủ mà PHP chạy trên đó. Đối với 64-bit,

print PHP_INT_MIN . ", ” . PHP_INT_MAX; hoa lợi -9223372036854775808, 9223372036854775807

1 hữu ích 0 bình luận chia sẻ

answer

0

Mặc dù các PHP_INT_*hằng số tồn tại trong một thời gian rất dài, các giá trị MIN / MAX giống nhau có thể được tìm thấy theo chương trình bằng cách dịch chuyển sang trái cho đến khi đạt đến số âm:

$x = 1;
while ($x > 0 && $x <<= 1);
echo "MIN: ", $x;
echo PHP_EOL;
echo "MAX: ", ~$x;

0 hữu ích 0 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

Trong bài này, chúng ta sẽ tìm hiểu kỹ về các kiểu dữ liệu số (number) trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP. Và các bạn cần đọc lại bài Các kiểu dữ liệu (data type) trong PHP để nắm sơ lược về kiểu dữ liệu IntegerFloat trong PHP.

Nội dung chính

  • 1. Kiểu dữ liệu số nguyên (Integer) trong PHP
  • 2. Kiểu dữ liệu số thực (Float) trong PHP
  • 3. Not a Number trong PHP (PHP NaN)
  • 4. Chuỗi số trong PHP (PHP Numerical Strings)
  • 5. Ép kiểu String và Float sang Integer trong PHP

1. Kiểu dữ liệu số nguyên (Integer) trong PHP

Trong hệ thống 32bit, kiểu Integer lưu trữ một số nguyên từ -2147483648 (2^31-1) đến 2147483647 (2^31). Trong hệ thống 64bit, kiểu Integer lưu trữ một số nguyên từ -9223372036854775808 (2^63-1) đến 9223372036854775807 (2^63).

Lưu ý: Một giá trị nằm ngoài phạm vi lưu trữ trên sẽ được lưu trữ với kiểu dữ liệu Float.

PHP có các hằng số (constant) được xác định trước cho các 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 theo byte

PHP có các function hỗ trợ kiểm tra xem một biến có đang lưu trữ số nguyên hay không:

  • is_int()
  • is_integer()
  • is_long()
";
echo "PHP_INT_MIN: ".PHP_INT_MIN."
"; echo "PHP_INT_SIZE: ".PHP_INT_SIZE." bytes
"; $x = 5985; echo 'Is $x Integer? '; var_dump(is_int($x)); $y = 59.85; echo '
Is $y Integer? '; var_dump(is_int($y)); ?>
Kết quả
PHP_INT_MAX: 9223372036854775807
PHP_INT_MIN: -9223372036854775808
PHP_INT_SIZE: 8 bytes
Is $x Integer? bool(true)
Is $y Integer? bool(false)

2. Kiểu dữ liệu số thực (Float) trong PHP

Kiểu dữ liệu Float có thể lưu trữ giá trị lên đến 1.7976931348623E+308 và có tối đa là 14 chữ số ở phần thập phân.

PHP có các hằng số (constant) được xác định trước cho các số thực:

  • PHP_FLOAT_MAX: Số thực lớn nhất có thể lưu trữ
  • PHP_FLOAT_MIN: Số thực nhỏ nhất có thể lưu trữ
  • -PHP_FLOAT_MAX: Số thực âm (negative Float) nhỏ nhất có thể lưu trữ
  • PHP_FLOAT_DIG: Số chữ số thập phân có thể được làm tròn thành một số Float
  • PHP_FLOAT_EPSILON: Số x dương nhỏ nhất x + 1.0! = 1.0
";
echo "PHP_FLOAT_MIN: ".PHP_FLOAT_MIN."
"; echo "-PHP_FLOAT_MAX: ;".-PHP_FLOAT_MAX."
"; echo "PHP_FLOAT_DIG: ".PHP_FLOAT_DIG."
"; echo "PHP_FLOAT_EPSILON: ".PHP_FLOAT_EPSILON."
"; $x = 5985; echo 'Is $x Float? '; var_dump(is_float($x)); $y = 59.85; echo '
Is $y Float? '; var_dump(is_float($y)); ?>
Kết quả
PHP_FLOAT_MAX: ;1.7976931348623E+308
PHP_FLOAT_MIN: 2.2250738585072E-308
-PHP_FLOAT_MAX: ;-1.7976931348623E+308
PHP_FLOAT_DIG: 15
PHP_FLOAT_EPSILON: 2.2204460492503E-16
Is $x Float? bool(false)
Is $y Float? bool(true)

Số vô cực trong PHP (PHP Infinity)

Một giá trị lớn hơn PHP_FLOAT_MAX được coi là số vô cực (infinity). PHP có các function để kiểm tra xem một giá trị số là vô hạn hay hữu hạn:

  • is_finite()
  • is_infinite()
";
var_dump($x);
?>
Kết quả
Is $x infinite? bool(true)
float(INF)

3. Not a Number trong PHP (PHP NaN)

NaN là viết tắt của Not a Number. PHP cung cấp sẵn hàm is_nan() để kiểm tra nếu một giá trị không phải là một số.

";
var_dump($y);
?>
Kết quả
int(200)
float(NAN)

4. Chuỗi số trong PHP (PHP Numerical Strings)

Một String trong PHP có thể chỉ bao gồm các chữ số. Hàm is_numeric() được sử dụng để xác định xem một String có chỉ gồm toàn các chữ số không. Hàm is_numeric() trả về true nếu biến là một số hoặc một chuỗi số, ngược lại trả về false.

";
$x = "5985";
echo "Is '5985' number? ";
var_dump(is_numeric($x));
echo "
"; $x = "59.85" + 100; echo "Is '5985' + 100 number? "; var_dump(is_numeric($x)); echo "
"; $x = "gochocit.com"; echo "Is 'gochocit.com' number? "; var_dump(is_numeric($x)); echo "
"; $x = 0xf4c3b00c; echo "Is 0xf4c3b00c number? "; var_dump(is_numeric($x)); echo "
"; $x = "0xf4c3b00c"; echo "Is '0xf4c3b00c' number? "; var_dump(is_numeric($x)); ?>
Kết quả
Is 5985 number? bool(true)
Is '5985' number? bool(true)
Is '5985' + 100 number? bool(true)
Is 'gochocit.com' number? bool(false)
Is 0xf4c3b00c number? bool(true)
Is '0xf4c3b00c' number? bool(false)

5. Ép kiểu String và Float sang Integer trong PHP

Chúng ta có thể ép kiểu StringFloat sang Integer trong PHP.

";
// Cast string to int
$x = "23465.768";
$int_cast = (int)$x;
echo $int_cast."
"; $y = "2345a.6789"; $int_cast = (int)$y; echo $int_cast; ?>
Kết quả
23465
23465
2345

Hàm (int), (integer) hoặc intval() thường được sử dụng để ép kiểu một value sang Integer.

  • Cách xử lý lỗi (error) trong PHP
  • Sử dụng interface trong Java
  • Thêm (insert) dữ liệu trong MySQL với PHP
  • Chương trình tính giai thừa (factorial) trong Java
  • Hàm khởi tạo (constructor) và hàm hủy (destructor) của class trong PHP