Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
ปัญหานี้เกิดจากการหารตัวเลขสองตัวแล้วทำให้เกิดเลขจุุดทศนิยมไม่มีที่สิ้นสุด เช่น
package division; import java.math.BigDecimal; final public class Main { public static void main(String[] args) { BigDecimal a = new BigDecimal(2); BigDecimal b = new BigDecimal(3); System.out.println(a.divide(b)); // ทำให้เกิด Error ค่าที่ได้คือ 0.6666... } }
วิธีแก้ปัญหา
package division; import java.math.BigDecimal; final public class Main { public static void main(String[] args) { BigDecimal a = new BigDecimal(2); BigDecimal b = new BigDecimal(3); // แก้แบบนี้ divide(ตัวหาร, หลักของทศนิยม, ปัดเศษ) a.divide(b, 4, RoundingMode.CEILING); // => 0.6667 a.divide(b, 4, RoundingMode.FLOOR); // => 0.6666 } }
0 comments:
Post a Comment