หมายเลข PHP
ในบทนี้ เราจะเจาะลึกถึงจำนวนเต็ม ทศนิยม และสตริงตัวเลข
หมายเลข PHP
สิ่งหนึ่งที่ควรสังเกตเกี่ยวกับ PHP คือมันให้การแปลงประเภทข้อมูลโดยอัตโนมัติ
ดังนั้น หากคุณกำหนดค่าจำนวนเต็มให้กับตัวแปร ประเภทของตัวแปรนั้นจะเป็นจำนวนเต็มโดยอัตโนมัติ จากนั้น หากคุณกำหนดสตริงให้กับตัวแปรเดียวกัน ชนิดจะเปลี่ยนเป็นสตริง
การแปลงอัตโนมัตินี้บางครั้งอาจทำให้โค้ดของคุณเสียหายได้
PHP Integers
2, 256, -256, 10358, -179567 เป็นจำนวนเต็มทั้งหมด
จำนวนเต็มคือตัวเลขที่ไม่มีส่วนทศนิยม
ชนิดข้อมูลจำนวนเต็มเป็นตัวเลขที่ไม่ใช่ทศนิยมระหว่าง -2147483648 และ 2147483647 ในระบบ 32 บิต และระหว่าง -9223372036854775808 และ 9223372036854775807 ในระบบ 64 บิต ค่าที่มากกว่า (หรือต่ำกว่านี้) จะถูกจัดเก็บเป็นแบบทศนิยม เนื่องจากมีค่าเกินขีดจำกัดของจำนวนเต็ม
หมายเหตุ:สิ่งสำคัญอีกอย่างที่ควรทราบคือแม้ว่า 4 * 2.5 จะเท่ากับ 10 ผลลัพธ์จะถูกเก็บไว้เป็นแบบลอย เนื่องจากตัวถูกดำเนินการตัวใดตัวหนึ่งเป็นทุ่น (2.5)
ต่อไปนี้คือกฎบางประการสำหรับจำนวนเต็ม:
- จำนวนเต็มต้องมีอย่างน้อยหนึ่งหลัก
- จำนวนเต็มต้องไม่มีจุดทศนิยม
- จำนวนเต็มสามารถเป็นได้ทั้งค่าบวกหรือค่าลบ
- จำนวนเต็มสามารถระบุได้ในสามรูปแบบ: ทศนิยม (10 ฐาน), เลขฐานสิบหก (ฐาน 16 - นำหน้าด้วย 0x) หรือฐานแปด (ฐาน 8 - นำหน้าด้วย 0)
PHP มีค่าคงที่ที่กำหนดไว้ล่วงหน้าต่อไปนี้สำหรับจำนวนเต็ม:
- PHP_INT_MAX - รองรับจำนวนเต็มที่ใหญ่ที่สุด
- PHP_INT_MIN - รองรับจำนวนเต็มที่น้อยที่สุด
- PHP_INT_SIZE - ขนาดของจำนวนเต็มเป็นไบต์
PHP มีฟังก์ชันต่อไปนี้เพื่อตรวจสอบว่าชนิดของตัวแปรเป็นจำนวนเต็มหรือไม่:
- is_int()
- is_integer() - นามแฝงของ is_int()
- is_long() - นามแฝงของ is_int()
ตัวอย่าง
ตรวจสอบว่าชนิดของตัวแปรเป็นจำนวนเต็มหรือไม่:
<?php
$x = 5985;
var_dump(is_int($x));
$x = 59.85;
var_dump(is_int($x));
?>
PHP Floats
ทศนิยมคือตัวเลขที่มีจุดทศนิยมหรือตัวเลขในรูปแบบเลขชี้กำลัง
2.0, 256.4, 10.358, 7.64E+5, 5.56E-5 เป็นแบบลอยตัวทั้งหมด
โดยทั่วไปประเภทข้อมูลทุ่นสามารถจัดเก็บค่าได้สูงถึง 1.7976931348623E+308 (ขึ้นอยู่กับแพลตฟอร์ม) และมีความแม่นยำสูงสุด 14 หลัก
PHP มีค่าคงที่ที่กำหนดไว้ล่วงหน้าสำหรับการลอยตัว (จาก PHP 7.2):
- PHP_FLOAT_MAX - จำนวนจุดลอยตัวที่ใหญ่ที่สุด
- PHP_FLOAT_MIN - จำนวนทศนิยมบวกที่เล็กที่สุดที่แสดงแทนได้
- - PHP_FLOAT_MAX - เลขทศนิยมติดลบที่แสดงแทนได้น้อยที่สุด
- PHP_FLOAT_DIG - จำนวนทศนิยมที่สามารถปัดเศษเป็นทศนิยมและย้อนกลับได้โดยไม่สูญเสียความแม่นยำ
- PHP_FLOAT_EPSILON - จำนวนบวกที่แทนค่าได้น้อยที่สุด x ดังนั้น x + 1.0 != 1.0
PHP มีฟังก์ชันต่อไปนี้เพื่อตรวจสอบว่าชนิดของตัวแปรเป็นแบบลอยหรือไม่:
- is_float()
- is_double() - นามแฝงของ is_float()
ตัวอย่าง
ตรวจสอบว่าประเภทของตัวแปรเป็นทศนิยมหรือไม่:
<?php
$x = 10.365;
var_dump(is_float($x));
?>
PHP Infinity
ค่าตัวเลขที่มากกว่า PHP_FLOAT_MAX ถือเป็นค่าอนันต์
PHP มีฟังก์ชันต่อไปนี้เพื่อตรวจสอบว่าค่าตัวเลขเป็นค่าจำกัดหรืออนันต์:
อย่างไรก็ตาม ฟังก์ชัน PHP var_dump() ส่งคืนประเภทข้อมูลและค่า:
ตัวอย่าง
ตรวจสอบว่าค่าตัวเลขเป็นค่าจำกัดหรืออนันต์:
<?php
$x = 1.9e411;
var_dump($x);
?>
PHP น่าน
NaN ย่อมาจาก Not a Number
NaN ใช้สำหรับการดำเนินการทางคณิตศาสตร์ที่เป็นไปไม่ได้
PHP มีฟังก์ชันต่อไปนี้เพื่อตรวจสอบว่าค่าไม่ใช่ตัวเลขหรือไม่:
อย่างไรก็ตาม ฟังก์ชัน PHP var_dump() ส่งคืนประเภทข้อมูลและค่า:
ตัวอย่าง
การคำนวณที่ไม่ถูกต้องจะส่งกลับค่า NaN:
<?php
$x = acos(8);
var_dump($x);
?>
PHP Numerical Strings
ฟังก์ชัน PHP is_numeric() สามารถใช้เพื่อค้นหาว่าตัวแปรเป็นตัวเลขหรือไม่ ฟังก์ชันจะคืนค่า จริง หากตัวแปรเป็นตัวเลขหรือสตริงที่เป็นตัวเลข มิฉะนั้น จะเป็นเท็จ
ตัวอย่าง
ตรวจสอบว่าตัวแปรเป็นตัวเลขหรือไม่:
<?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));
?>
หมายเหตุ:จาก PHP 7.0: ฟังก์ชัน is_numeric() จะคืนค่า FALSE สำหรับสตริงตัวเลขในรูปแบบเลขฐานสิบหก (เช่น 0xf4c3b00c) เนื่องจากจะไม่ถือเป็นสตริงตัวเลขอีกต่อไป
PHP Casting Strings และ Floats เป็น Integers
บางครั้งคุณจำเป็นต้องแปลงค่าตัวเลขเป็นข้อมูลประเภทอื่น
ฟังก์ชัน (int) (จำนวนเต็ม) หรือ intval() มักใช้เพื่อแปลงค่าเป็นจำนวนเต็ม
ตัวอย่าง
โยนทุ่นและสตริงเป็นจำนวนเต็ม:
<?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;
?>