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