0Pricing
Java Academy · บทเรียน

การปัดเศษและสเกล

ควบคุมความแม่นยำและโหมดการปัดเศษ

การปัดเศษและสเกล เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

มาตราส่วนและความแม่นยำ

BigDecimal ทุกค่ามีมาตราส่วน ซึ่งคือจำนวนหลักที่อยู่ด้านขวาของจุดทศนิยม ค่า 12.340 มีมาตราส่วนเท่ากับ 3 การควบคุมมาตราส่วนช่วยให้แสดงเงินด้วยทศนิยมสองตำแหน่งได้อย่างพอดี

การตรวจสอบมาตราส่วน

เรียกใช้ scale() เพื่อดูว่าค่าหนึ่งมีตำแหน่งทศนิยมกี่ตำแหน่ง และใช้ precision() เพื่อดูจำนวนหลักที่มีนัยสำคัญทั้งหมด

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.340");
        System.out.println(v.scale());
        System.out.println(v.precision());
    }
}

ใช้ setScale เพื่อกำหนดทศนิยม

setScale บังคับให้ค่ามีจำนวนตำแหน่งทศนิยมตามที่เลือก คุณต้องส่ง RoundingMode เข้าไปหากจำเป็นต้องปัดเศษ

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.3456");
        System.out.println(v.setScale(2, RoundingMode.HALF_UP));
    }
}

การปัดเศษแบบครึ่งขึ้นที่ใช้บ่อย

RoundingMode.HALF_UP จะปัดไปยังค่าที่ใกล้ที่สุด และหากอยู่กึ่งกลางจะปัดออกจากศูนย์ นี่คือการปัดเศษทั่วไปที่ผู้คนเรียนรู้ในโรงเรียน

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_UP));
        System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_UP));
    }
}

การปัดเศษแบบครึ่งเป็นคู่ของธนาคาร

HALF_EVEN จะปัดค่าที่อยู่กึ่งกลางไปยังหลักคู่ที่ใกล้ที่สุด วิธีนี้ช่วยลดความเอนเอียงเมื่อปัดเศษหลายครั้ง จึงเป็นวิธีที่ธนาคารนิยมใช้

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_EVEN));
        System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_EVEN));
    }
}

CEILING และ FLOOR

CEILING จะปัดเข้าหาอนันต์บวกเสมอ ส่วน FLOOR จะปัดเข้าหาอนันต์ลบเสมอ โดยไม่ขึ้นอยู่กับหลักที่ถูกตัดออก

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("2.1");
        System.out.println(v.setScale(0, RoundingMode.CEILING));
        System.out.println(v.setScale(0, RoundingMode.FLOOR));
    }
}

DOWN และ UP

DOWN จะตัดเศษเข้าหาศูนย์ ส่วน UP จะปัดออกจากศูนย์เสมอ DOWN คือการตัดเศษแบบง่าย ๆ

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("2.9");
        System.out.println(v.setScale(0, RoundingMode.DOWN));
        System.out.println(v.setScale(0, RoundingMode.UP));
    }
}

การปัดเศษระหว่างการหาร

การหารอาจให้ทศนิยมที่ต่อเนื่องไม่รู้จบ ดังนั้นจึงต้องระบุมาตราส่วนและโหมดการปัดเศษไว้ในคำเรียก divide โดยตรง

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal bill = new BigDecimal("100.00");
        BigDecimal people = new BigDecimal("3");
        System.out.println(bill.divide(people, 2, RoundingMode.HALF_UP));
    }
}

การตัดเลขศูนย์ท้าย

stripTrailingZeros จะลบเลขศูนย์ส่วนเกินด้านท้ายออก ใช้ร่วมกับ toPlainString เพื่อหลีกเลี่ยงการแสดงผลในรูปสัญกรณ์วิทยาศาสตร์

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.300");
        System.out.println(v.stripTrailingZeros().toPlainString());
    }
}

การจัดรูปแบบเงิน

สำหรับการแสดงผล ให้กำหนดมาตราส่วนเป็น 2 ด้วย HALF_UP เพื่อให้ราคาแสดงทศนิยมสองตำแหน่งเสมอ แม้จำนวนเงินนั้นจะเป็นจำนวนเต็มก็ตาม

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal amount = new BigDecimal("7");
        System.out.println(amount.setScale(2, RoundingMode.HALF_UP));
    }
}

การเลือกโหมด

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

ตรวจสอบอย่างรวดเร็ว

ทดสอบความรู้เกี่ยวกับมาตราส่วนและการปัดเศษ

ทบทวน

คุณได้เรียนรู้การควบคุมความแม่นยำ:

  • มาตราส่วนคือจำนวนหลักหลังจุดทศนิยม
  • setScale ใช้กำหนดตำแหน่งทศนิยม และต้องระบุ RoundingMode
  • HALF_UP คือการปัดเศษทั่วไป ส่วน HALF_EVEN คือการปัดเศษแบบธนาคาร
  • CEILING, FLOOR, UP และ DOWN ครอบคลุมการปัดเศษตามทิศทางต่าง ๆ
  • ระบุโหมดสำหรับการหารเสมอเพื่อหลีกเลี่ยงข้อผิดพลาด

คำถามที่พบบ่อย

บทเรียน “การปัดเศษและสเกล” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การปัดเศษและสเกล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การปัดเศษและสเกล”

ควบคุมความแม่นยำและโหมดการปัดเศษ คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การปัดเศษและสเกล” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดจึงไม่ใช้ double กับเงิน
  2. การทำงานกับ BigDecimal
  3. การปัดเศษและสเกล
  4. BigInteger สำหรับตัวเลขขนาดใหญ่
← กลับไปที่ Java Academy