ท่านลองดูโปรแกรมด้านล่าง
echo number_format( 16383.815 , 2 ) ; //16,383.82 echo number_format( 20971.815 , 2 ) ; //20,971.82 echo number_format( 16384.815 , 2 ) ; //16,384.81 echo number_format( 20970.815 , 2 ) ; //20,970.81 |
เห็นความแปลกอะไรหรือเปล่า?
สิ่งที่ผมเห็นคือ 2 คำสั่งบน มันปัดขึ้น แต่ 2 คำสั่งล่าง มันไม่ปัด
ผมทดลองตัวเลขอยู่เป็นหลายชั่วโมง จนได้ข้อสรุปว่า
ตั้งแ่ต่ 16383 ลงไปมันจะปัดทศนิยมขึ้นให้ และ ตั้งแต่ 20971 ขึ้นไป มันก็ปัด
ส่วนตัวเลขที่อยู่ในช่วง 16384 – 20970 มันไม่ยอมปัดขึ้นให้
เกิดอะไรขึ้นกับตัวเลขที่อยู่ในช่วงนี้
ไม่เพียงแต่ฟังก์ชั่น number_format เท่านั้น แต่ฟังก์ชั่น round ก็เป็นเหมือนกัน
เพราะฉะนั้น ท่านที่เขียนโปรแกรม ที่เกี่ยวข้องกับตัวเลข โปรดระวังตัวเลขในช่วงนี้ให้ดี
RTSP says:
24/08/2552 at 24/08/2552
16384 นี่ 2^14 ส่วนสองหมื่นกว่าๆนี่ก็แปลกอยู่เหมือนกัน
kongtoonarmy says:
26/08/2552 at 26/08/2552
แล้วคุณ platoosom ตั้งแ่ต่ 16383 ลงไปมันจะปัดทศนิยมขึ้นให้ และ ตั้งแต่ 20971 ขึ้นไป มันก็ปัด ครับ
kongtoonarmy says:
26/08/2552 at 26/08/2552
คือผมอยากรู้ว่ารู้ได้ไง ว่าต้องเป็นตัวเลข นี้ครับ
administrator says:
26/08/2552 at 26/08/2552
สาเหตุที่ผมเจอเนื่องจากผมเขียนโปรแกรม ที่เกี่ยวข้องกับทศนิยม ผมใช้คำสั่งเดียวกัน แต่ตัวหนึ่งปัด อีกตัวไม่ปัด ผมก็เลยสงสัยว่าเกิดอะไรขึ้น
ผมเลยลองเปลี่ยนตัวเลขไปเรื่อยๆ แล้วสังเกต จนได้ข้อสรุป อย่างที่ผมเขียนไว้นั้นล่ะครับ
คุณลองเปลี่ยนตัวเลข เล่นดูครับ อาจจะเจอข้อสรุปใหม่