2013-04-29 253 views
-1

我已经写了这一小段代码:BIGDECIMAL抛出异常

BigDecimal nummer = new BigDecimal("8340337220.0"); 
BigDecimal denominator = new BigDecimal("17.O"); 
BigDecimal result = nummer.divide(denominator); 
System.out.println(result); 

在Eclipse中运行它后,它给了我:

Exception in thread "main" java.lang.NumberFormatException 
    at java.math.BigDecimal.<init>(BigDecimal.java:459) 
    at java.math.BigDecimal.<init>(BigDecimal.java:728) 
    at main.main(main.java:10) 

有人能帮助我吗?

回答

5

看起来您在"17.O"中有一个大写字母“O”。以零替换:

BigDecimal denominator = new BigDecimal("17.0"); 
+0

谢谢你,是我不好。现在我得到这个:线程“main”java.lang.ArithmeticException中的异常:非终止十进制扩展;没有确切的可表示的小数结果。 – user1480139 2013-04-29 18:13:38

+0

解决,需要一个规模和舍入模式:)谢谢 – user1480139 2013-04-29 18:16:31

+0

BigDecimals是任意精度,但不是无限的精度。您需要使用采用整数比例和“RoundingMode”的“div”方法。 – rgettman 2013-04-29 18:17:02

0
BigDecimal nummer = new BigDecimal("83227720.0"); 
BigDecimal denominator = new BigDecimal("17.0"); 
BigDecimal result = nummer.divide(denominator,10,RoundingMode.DOWN); 
System.out.println(result); 
+0

单纯的代码不能回答问题。你发现了什么问题? – EJP 2013-04-30 01:31:43