以下將兩個BegDecimal
數字相除的方法可以正常工作。Java中的某些BigDecimal數字在分割時會導致拋出ArithmeticException
BigDecimal a=new BigDecimal(5);
BigDecimal b=new BigDecimal(2);
System.out.println(a.divide(b));
輸出:2.5
下同樣的方法但未能與java.lang.ArithmeticException
BigDecimal c=new BigDecimal(361);
BigDecimal d=new BigDecimal(6);
System.out.println(c.divide(d));
下面是完整的異常堆棧跟蹤。
Exception in thread "main" java.lang.ArithmeticException:
Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1603)
at currenttime.Main.main(Main.java:15)
Java Result: 1
什麼是解決方案?
您需要設置一個舍入模式。否則,它默認爲「確切」。 – Mysticial 2012-07-28 23:16:32
更多信息:http://jaydeepm.wordpress.com/2009/06/04/bigdecimal-and-non-terminating-decimal-expansion-error/ – Mysticial 2012-07-28 23:17:21