ผลต่างระหว่างรุ่นของ "ภาษาพีเอชพี/ประเภทของตัวแปร/จำนวนเต็ม"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Zodlicious (คุย | ส่วนร่วม)
ภาษาพีเอชพี/คู่มืออ้างอิงภาษา/ประเภทของตัวแปร/จำนวนเต็ม ถูกย้ายไปเป็น ภาษาพีเอชพี/ประเภทข
Nullzerobot (คุย | ส่วนร่วม)
โรบอต: เก็บกวาด
บรรทัดที่ 1:
== Integers ==
ชนิด integer คือ จำนวน ในเซ็ตของ Z = {..., -2, -1, 0, 1, 2, ...}<br />หรือที่เรียกกันว่า '''จำนวนเต็ม'''
=== รูปแบบคำสั่ง ===
Integer สามารถกำหนดค่าได้ทั้งในแบบ ฐานสิบ(decimal) ฐานสิบหก(hexadecimal) ฐานแปด(octal) สามารถใช้เครื่องหมายกำกับได้ (+ หรือ -)<br />
 
 
หากต้องการกำหนดแบบฐานแปด ให้นำหน้าจำนวนด้วย 0 (ศุนย์) ถ้าต้องการใช้เลขฐานสิบหกให้นำหน้าจำนวนด้วย 0x
<source lang="php">
เส้น 13 ⟶ 15:
</source>
ขนาดที่ใช้ในการเก็บ integer ขึ้นอยู่กับแพล็ตฟอร์มที่ใช้ โดยค่าที่เก็บได้สูงสุดจะประมาณ 2 พันล้าน(signed integer 32 bits) PHP นั้นไม่สนับสนุน unsigned integer ส่วนขนาดของ interger สามารถกำหนดได้โดยใช้ '''PHP_INT_SIZE''' และค่าสูงสุดกำหนดได้โดยใช้ '''PHP_INT_MAX'''
* ถ้ามีการใส่ตัวเลขที่ไม่ถูกต้องใน octal integer (เช่น 8 หรือ 9) ตัวเลขที่เหลือจะถูกข้ามไป
<source lang="php">
<?php
var_dump(01090); // 010 octal = 8 decimal
?>
</source>
=== Integer Overflow ===
ถ้า PHP พบกับจำนวนที่มีค่าเกินกว่าที่ชนิด integer จะเก็บได้ จะเกิดการแปลงให้การเป็น [[ภาษาพีเอชพี/คู่มืออ้างอิงภาษา/ประเภทของตัวแปร/จำนวนทศนิยม|float]] แทนและเช่นเดียวกันหากผลลัพธ์ของการคำนวนใดเกินกว่าที่ชนิด integer เก็บได้จะเกิดการแปลงเป็น float เช่นกัน
<source lang="php">
เส้น 45 ⟶ 47:
?>
</source>
* ใน PHP ไม่มี operator การหาร สำหรับ integer <br />1/2 จะได้ค่า [[ภาษาพีเอชพี/คู่มืออ้างอิงภาษา/ประเภทของตัวแปร/จำนวนทศนิยม|float]] 0.5 โดยค่าสามารถ cast(แปลง) เป็น integer ได้แต่จะมีการปัดลง หรือจะใช้ round() ที่ควบคุมการปัดได้มากกว่าเดิม
<source lang="php">
<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>
</source>
=== การแปลงเป็น integer ===
สามารถแปลงค่าเป็น integer ได้ด้วยการใช้ (int) หรือ (integer) แบบในตัวอย่างข้างบน แต่โดยมากแล้วมัก ไม่จำเป็น เนื่องจากค่าจะได้รับการแปลงโดยอัตโนมัติหากว่า operator, function หรือ control structure นั้นต้องการค่าชนิด integer เป็น argument และค่านั้นสามารถแปลงเป็น integer ได้ด้วยฟังก์ชั่น intval()
==== แปลงจาก boolean ====
'''FALSE''' จะได้ค่าเป็น 0 (ศูนย์) และ '''TRUE''' จะได้ค่าเป็น 1 (หนึ่ง)
==== แปลงจาก float ====
เมื่อมีการแปลงจาก float เป็น integer ค่าจะถูก'''ปัดลง'''<br />
 
ถ้าหากแปลงค่า float เกินกว่าที่ int จะเก็บไว้ได้ ผลลัพธ์ที่จะได้ยังไม่ถูกกำหนด เนื่องจาก float นั้นไม่มีความแม่นยำพอที่จะบอก integer ที่เจาะจงได้<br />
 
ถ้าหากแปลงค่า float เกินกว่าที่ int จะเก็บไว้ได้ ผลลัพธ์ที่จะได้ยังไม่ถูกกำหนด เนื่องจาก float นั้นไม่มีความแม่นยำพอที่จะบอก integer ที่เจาะจงได้<br />
 
 
จะไม่มีการเตือน เมื่อเกิดปัญหาแบบนี้
* '''คำเตือน''' : อย่าได้ cast เศษที่แปลก ๆ เนื่องจากบางครั้งอาจจะทำให้พบกับผลลัพธ์ที่ไม่คาดคิด
<source lang="php">
<?php
เส้น 68 ⟶ 74:
</source>
 
==== การแปลงจาก string ====
* อ่านต่อใน [[ภาษาพีเอชพี/คู่มืออ้างอิงภาษา/ประเภทของตัวแปร/ข้อความ|Strings]]
==== การแปลงจากประเภทอื่น ๆ นอกจากนี้ ====
* การแปลงจากชนิดตัวแปรประเภทอื่น ๆ นอกเหนือจากที่กล่าวมาเป็น integer ยังไม่มีการกำหนด เพราะฉะนั้นอย่าไว้ใจกับรูปแบบที่ค้นพบเอาเอง <br />เพราะมันอาจจะเปลี่ยนแปลงได้โดยไม่มีการประกาศให้ทราบก่อน