ฟังก์ชันหลักสำหรับการแปลงค่าจากเลขจำนวนจริง (floating-point) ไปยังจำนวนเติม (integer) ที่มีอยู่ในเกือบทุกภาษาคือ Trancate (trunc), Floor, Ceiling (ceil) แล้วก็ Round ครับ ซึ่งบางทีดูเผินๆแล้วอาจเกิดความสับสนได้ว่ามันต่างกันตรงไหน ซึ่งการจะเลือกใช้ให้ถูกนั้นเราจำเป็นที่จะต้องเข้าใจถึงนิยามของแต่ละตัวซะก่อน
Truncate - คือการตัดเศษทิ้งครับ พูดง่ายๆคืออะไรที่อยู่หลังจุดเอามันออกให้หมด อย่าง trunc(4.67) ก็จะได้ค่า 4 โดยไม่สนว่าเลขหลังจุดจะมีค่าเท่าไหร่
Floor - คือการปัดลง หรือก็คือเลขจำนวนเต็มที่มากที่สุด ที่น้อยกว่าหรือเท่ากับค่าเดิมของมัน เช่น floor(5.6) = 5 หรือ floor(5.4) =5 เราไม่สนใจเลขหลังจุดเช่นกัน แต่เราจะพยายามหาจำนวนเต็มที่มาค่ามากที่สุดมาแทน
Ceiling - จะตรงข้ามกับ floor คือเลขจำนวนเต็มที่น้อยที่สุด ที่มากกว่าหรือเท่ากับค่าเดิมของมัน เช่น ceil(5.6) = 6 หรือ ceil(5.4) = 6 เช่นกันครับ เราไม่สนใจเลขหลังจุด
Round - เป็นฟังก์ชันเดียวที่ดูค่าของตัวส่วน ซึ่งจะถูกปัดให้เป็นเลขจำนวนเต็มมีค่าใกล้เคียงกับค่าเดิมมากที่สุด เช่น round(5.6) = 6 หรือ round(5.4) = 5
นี่คือนิยามโดยทั่วไปที่ดูไม่ยากเท่าไหร่ แต่ว่าสิ่งที่ทำให้สับสนและผิดกันประจำอย่างแรกคือ เราลืมเรื่องเลขติดลบไป เช่น trunc กับ floor ดูแล้วน่าจะได้ค่าเท่ากันตลอด แต่จริงๆแล้ว ค่าอย่าง -3.4 เมื่อผ่านฟังก์ชัน trunc จะถูกตัดเศษให้เป็น -3 แต่ฟังก์ชัน floor จะหาจำนวนเต็มที่มีค่าน้อยสุดที่ยังน้อยกว่าค่าเดิมอยู่ ซึ่งมันคือ -4 (ไม่ใช่ -3) เช่นกันครับ ceil(-4.5) ก็ไม่ใช่ -5 แต่เป็น -4 ต่างหาก เพราะ -4 มีค่ามากกว่า -5
มีฟังก์ชัน round เพียงตัวเดียวที่ดูจะขัดกับสามัญสำนึกน้อยที่สุด เพราะเป็นการหาตัวใกล้เคียงอย่างที่เราเข้าใจ เช่น round(6.7) = 7 , round(-6.7) = -7, round(6.2) = 6 และ round(-6.2) = -6
อย่าลืมนะครับ ในการแปลงจากจำนวนจริงเป็นจำนวนเต็ม จะต้องเลือกใช้ฟังก์ชันให้ถูก (ส่วนใหญ่คนไทย จะเข้าใจฟังก์ชันนี้ด้วยคำๆเดียวคือ "ปัดเศษ" แต่จริงๆแล้วมันมีอะไรที่มากกว่านั้น) โดยเฉพาะอย่างยิ่งเมื่อเราทำงานกับค่าที่มีค่าติดลบด้วยแล้วยิ่งต้องระวังเป็นพิเศษ
สุดท้ายนี้มีตารางตัวอย่าง ของค่าที่ได้จากฟังก์ชันต่างๆเป็นการสรุปให้ดูอีกครั้งครับ
Truncate | Floor | Ceiling | Round | |
3.0 | 3 | 3 | 3 | 3 |
3.3 | 3 | 3 | 4 | 3 |
3.5 | 3 | 3 | 4 | 4 |
3.6 | 3 | 3 | 4 | 4 |
-3.0 | -3 | -3 | -3 | -3 |
-3.3 | -3 | -4 | -3 | -3 |
-3.5 | -3 | -4 | -3 | -4 |
-3.6 | -3 | -4 | -3 | -4 |