ภาษาพีเอชพี/ประเภทของตัวแปร/จำนวนทศนิยม

Floatแก้ไข

Floating point number (หรือที่รู้จักกันใน floats, double, จำนวนจริง) เป็นจำนวนจริง ที่มีค่าเป็นทศนิยม


โดยมีรูปแบบไวยากรณ์ การประกาศตัวแปรดังนี้

<?php
$a = 4.22;
$b = 3.2e6;
$c = 2E-3;
?>

ขนาดของ float นั้นขึ้นอยู่กับแพล็ตฟอร์มที่ทำงานอยู่ ค่าสูงสุดที่เก็บได้จะอยู่ที่ประมาณ 1.8e308 และมีความแม่นยำอยู่ที่ 14 ตัว(ซึ่งเป็นค่ามาตรฐานของ 64 bits IEEE format) คำเตือน : ความแม่นยำของ float
ตัวอย่างง่าย ๆ คือเศษ 0.1 หรือ 0.7 นั้นเมื่อแปลงค่า binary ภายในแล้วจะเสียความแม่นยำไป
ซึ่งทำให้เกิดผลลัพธ์แปลก ๆ เช่น floor((0.1*0.7)*10) จะได้ค่า 7 แทนที่ควรจะเป็น 8 เนื่องจากค่า binary ภายในจะเป็น 7.9 หรืออะไรทำนองนั้น

เป็นสาเหตุที่ว่ามันเป็นไปไม่ได้ที่จะแสดง เศษส่วน บางค่าเป็นจำนวนเต็มในรูปแบบจำกัดจำนวนได้
เช่น 1/3 เป็น 0.3 เนื่องจากจะมีการปัดลง

เพราะฉะนั้นจงอย่าฝากความหวังกับเลขตัวสุดท้ายของ float และอย่าเอา float ไปเทียบกับค่าอื่นเพื่อทดสอบ ความเท่ากัน

การแปลงเป็น floatแก้ไข

  • สำหรับการแปลงจาก string เป็น float นั้นให้อ่านได้ใน Strings
  • ส่วนการแปลงค่าประเภทอื่นนั้นจะแปลงค่าเป็น integer ก่อนค่อยแปลงเป็น float