การปัดเศษในภาษา C: วิธีใช้งานฟังก์ชัน round(), ceil(), floor() และตัวอย่างโค้ดปัดเศษ

1. พื้นฐานของการปัดเศษ: ทำไมจึงจำเป็น

ในการเขียนโปรแกรม การควบคุมความแม่นยำของตัวเลขอย่างเหมาะสมเป็นสิ่งสำคัญมาก โดยเฉพาะเมื่อผลลัพธ์ของการคำนวณมีจุดทศนิยม การใช้การปัดเศษจะช่วยจัดการตัวเลขให้ดูง่ายและเป็นระเบียบมากขึ้น เช่น การคำนวณจำนวนเงินหรือการสรุปข้อมูลการวัด การปัดเศษถูกใช้ในหลากหลายสถานการณ์

ตัวอย่างการปัดเศษ

เช่น เมื่อปัดเศษ 2.5 จะได้ 3 แต่ถ้าปัดเศษ 2.3 จะได้ 2 การดำเนินการแบบนี้พบได้บ่อยในชีวิตประจำวัน ในโลกของการเขียนโปรแกรมก็มีหลายกรณีที่ต้องทำให้ผลลัพธ์ง่ายขึ้นด้วยการปัดเศษ

2. วิธีปัดเศษในภาษา C

ในภาษา C การปัดเศษสามารถทำได้โดยใช้ฟังก์ชัน round() ซึ่งอยู่ในไลบรารี math.h ฟังก์ชันนี้จะปัดค่าที่มีจุดทศนิยมให้เป็นจำนวนเต็มที่ใกล้ที่สุด

วิธีใช้ฟังก์ชัน round() เบื้องต้น

ตัวอย่างโค้ดการใช้ฟังก์ชัน round() มีดังนี้

#include <stdio.h>
#include <math.h>

int main() {
    double x = 2.5;
    printf("ผลลัพธ์หลังปัดเศษ: %fn", round(x));
    return 0;
}

เมื่อรันโปรแกรมนี้ จะได้ผลลัพธ์ว่า “ผลลัพธ์หลังปัดเศษ: 3.000000” นี่คือผลลัพธ์ของการปัดเศษ 2.5 ให้เป็น 3 ด้วยฟังก์ชัน round() อย่าลืมใส่ไลบรารี math.h ด้วย

3. การปัดเศษโดยระบุจำนวนหลักทศนิยม

ถ้าต้องการปัดเศษโดยระบุจำนวนหลักทศนิยมในภาษา C ต้องใช้เทคนิคเพิ่มเติม เช่น การคูณด้วยเลข 10 ตามจำนวนหลักทศนิยมที่ต้องการ แล้วปัดเศษและหารกลับ

ตัวอย่างโค้ดสำหรับปัดเศษตามจำนวนหลัก

#include <stdio.h>
#include <math.h>

int main() {
    double num = 123.456;
    num = num * 100;  // เปลี่ยนจุดทศนิยมสองหลักให้เป็นจำนวนเต็ม
    double result = round(num) / 100;  // ปัดเศษแล้วหารกลับ
    printf("%.2fn", result);  // ผลลัพธ์คือ 123.46
    return 0;
}

ในโค้ดนี้ เราคูณ num ด้วย 100 เพื่อย้ายจุดทศนิยม จากนั้นใช้ round() ปัดเศษ แล้วหารกลับด้วย 100 ตัวอย่างนี้จะปัด 123.456 ให้เป็น 123.46

4. การปัดเศษโดยไม่ใช้ฟังก์ชัน

ภาษา C สามารถปัดเศษโดยไม่ใช้ฟังก์ชัน round() ได้ โดยการบวก 0.5 แล้วแปลงเป็น int

วิธีปัดเศษด้วยตนเอง

#include <stdio.h>

int main() {
    double num = 2.3;
    int rounded = (int)(num + 0.5);
    printf("ผลลัพธ์หลังปัดเศษ: %dn", rounded);
    return 0;
}

โค้ดนี้จะนำ 2.3 + 0.5 ได้ 2.8 แล้วแปลงเป็น int ได้ 2 วิธีนี้ใช้ปัดเศษโดยไม่ต้องใช้ round() เหมาะเป็นทางเลือกเสริม

5. การปัดเศษตัวเลขติดลบ

ไม่เพียงแต่ตัวเลขบวก ตัวเลขติดลบก็ปัดเศษได้เช่นกัน แต่ผลอาจดูขัดกับความรู้สึก เช่น -2.5 จะปัดเป็น -3 ไม่ใช่ -2 ฟังก์ชัน round() ในภาษา C จะปัดเศษตามมาตรฐานแม้กับเลขติดลบ

ตัวอย่างการปัดเศษเลขติดลบ

#include <stdio.h>
#include <math.h>

int main() {
    double num = -2.5;
    printf("ผลลัพธ์หลังปัดเศษ: %fn", round(num));
    return 0;
}

เมื่อรันโปรแกรมนี้ -2.5 จะถูกปัดเศษเป็น -3.0 เช่นเดียวกับเลขบวก การปัดเศษจะใช้กฎเดียวกันกับเลขลบด้วย ควรตรวจสอบให้แน่ใจว่าผลลัพธ์เป็นไปตามที่ต้องการเมื่อใช้กับเลขลบ

6. การปัดขึ้นและปัดลงในภาษา C

นอกจากการปัดเศษแล้ว การปัดลง (floor()) และการปัดขึ้น (ceil()) ก็ใช้จัดการตัวเลขในภาษา C ได้ โดยทั้งสองฟังก์ชันอยู่ในไลบรารี math.h

ตัวอย่างการปัดขึ้นและปัดลง

#include <stdio.h>
#include <math.h>

int main() {
    double num = 2.7;
    printf("ปัดลง: %fn", floor(num));  // ผลลัพธ์คือ 2.0
    printf("ปัดขึ้น: %fn", ceil(num));   // ผลลัพธ์คือ 3.0
    return 0;
}

ในโค้ดนี้ หากใช้ floor() กับ 2.7 จะได้ 2.0 ส่วน ceil() จะได้ 3.0 floor() คือการปัดลง และ ceil() คือการปัดขึ้น

7. สรุป

การปัดเศษในภาษา C สามารถทำได้ง่ายด้วยฟังก์ชัน round() จากไลบรารี math.h หากต้องการปัดเศษตามจำนวนหลักหรือกับตัวเลขติดลบ อาจต้องใช้เทคนิคเพิ่มเติม การเลือกใช้วิธีปัดเศษ ปัดขึ้น หรือปัดลง ควรขึ้นอยู่กับลักษณะการใช้งานเพื่อให้จัดการตัวเลขได้ยืดหยุ่น

侍エンジニア塾