มองข้ามไลบรารีพิเศษที่อนุญาตให้คุณทำงานกับตัวเลขจำนวนมากค่า int ที่ใหญ่ที่สุดที่คุณสามารถจัดเก็บใน PHP คือเท่าใด
มองข้ามไลบรารีพิเศษที่อนุญาตให้คุณทำงานกับตัวเลขจำนวนมากค่า int ที่ใหญ่ที่สุดที่คุณสามารถจัดเก็บใน PHP คือเท่าใด
คำตอบ:
จากคู่มือ PHP :
ขนาดของจำนวนเต็มขึ้นอยู่กับแพลตฟอร์มแม้ว่าค่าสูงสุดประมาณสองพันล้านจะเป็นค่าปกติ (นั่นคือ 32 บิตที่เซ็นชื่อ) PHP ไม่รองรับจำนวนเต็มที่ไม่ได้ลงชื่อ ขนาดจำนวนเต็มสามารถกำหนดได้โดยใช้ PHP_INT_SIZE คงที่และค่าสูงสุดโดยใช้ PHP_INT_MAX คงที่ตั้งแต่ PHP 4.4.0 และ PHP 5.0.5
แพลตฟอร์ม 64 บิตมักมีค่าสูงสุดประมาณ 9E18 ยกเว้นใน Windows ก่อน PHP 7 ซึ่งเป็น 32 บิตเสมอ
PHP รุ่น 32 บิต:
PHP รุ่น 64 บิต:
รวมตัวเลขแล้ว
หมายเหตุ: บิวด์ 64 บิตบางตัวเคยใช้จำนวนเต็ม 32 บิตโดยเฉพาะ Windows รุ่นเก่าที่สร้าง PHP
ค่านอกช่วงเหล่านี้จะแสดงด้วยค่าทศนิยมเช่นเดียวกับค่าที่ไม่ใช่จำนวนเต็มภายในช่วงเหล่านี้ ล่ามจะกำหนดโดยอัตโนมัติว่าการเปลี่ยนไปยังจุดลอยตัวนี้จะต้องเกิดขึ้นเมื่อใดโดยขึ้นอยู่กับว่าค่าผลลัพธ์ของการคำนวณไม่สามารถแสดงเป็นจำนวนเต็มได้
PHP ไม่รองรับจำนวนเต็ม "ไม่ได้ลงนาม" ดังนั้นจึง จำกัด ค่าสูงสุดของจำนวนเต็มทั้งหมดไว้ที่ช่วงของจำนวนเต็ม "ลงนาม"
ขนาดของ PHP ints ขึ้นอยู่กับแพลตฟอร์ม :
ขนาดของจำนวนเต็มขึ้นอยู่กับแพลตฟอร์มแม้ว่าค่าสูงสุดประมาณสองพันล้านจะเป็นค่าปกติ (นั่นคือ 32 บิตที่เซ็นชื่อ) PHP ไม่รองรับจำนวนเต็มที่ไม่ได้ลงชื่อ ขนาดจำนวนเต็มสามารถกำหนดได้โดยใช้ PHP_INT_SIZE คงที่และค่าสูงสุดโดยใช้ PHP_INT_MAX คงที่ตั้งแต่ PHP 4.4.0 และ PHP 5.0.5
PHP 6 เพิ่ม "longs" (ints 64 บิต)
(ช้าไปหน่อย แต่อาจมีประโยชน์)
เชื่อถือเฉพาะPHP_INT_MAX และ PHP_INT_SIZEค่านี้จะแตกต่างกันไปตาม arch ของคุณ (32/64 บิต) และระบบปฏิบัติการของคุณ ...
"เดา" หรือ "คำใบ้" อื่น ๆ อาจเป็นเท็จได้
ฉันพบแล้ว: 2 32 - 1 (2147483647)
จำนวนเต็มล้น
หาก PHP พบตัวเลขเกินขอบเขตของประเภทจำนวนเต็มจะถูกตีความเป็นจำนวนลอยแทน นอกจากนี้การดำเนินการที่ให้ผลลัพธ์เป็นตัวเลขที่เกินขอบเขตของประเภทจำนวนเต็มจะส่งกลับค่าลอยแทน
<?php
$large_number = 2147483647;
var_dump($large_number);
// output: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);
// output: float(2147483648)
แม้ว่าPHP_INT_*
ค่าคงที่จะมีอยู่เป็นเวลานาน แต่ค่า MIN / MAX เดียวกันนี้สามารถพบได้โดยการเลื่อนไปทางซ้ายจนกว่าจะถึงจำนวนลบ:
$x = 1;
while ($x > 0 && $x <<= 1);
echo "MIN: ", $x;
echo PHP_EOL;
echo "MAX: ", ~$x;
มันขึ้นอยู่กับสถาปัตยกรรมของเซิร์ฟเวอร์ที่ PHP ทำงาน สำหรับ 64 บิต
print PHP_INT_MIN . ", ” . PHP_INT_MAX;
อัตราผลตอบแทน -9223372036854775808, 9223372036854775807