首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java BigDecimal划分

Java BigDecimal划分
EN

Stack Overflow用户
提问于 2017-03-06 01:08:18
回答 1查看 3K关注 0票数 1

我在这里做错什么了?很肯定这是正确的,我可以打印总数,但它打破了计算平均值。

代码语言:javascript
复制
public static void main(String[] args) {

    BigDecimal test1 = new BigDecimal("67");
    BigDecimal test2 = new BigDecimal("76");
    BigDecimal test3 = new BigDecimal("99");
    BigDecimal test_count = new BigDecimal("3");
    BigDecimal total = test1.add(test2).add(test3);
    System.out.println(total);
    BigDecimal average = total.divide(test_count);
    System.out.println(average);

}

引发的异常:

代码语言:javascript
复制
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
    at java.math.BigDecimal.divide(BigDecimal.java:1690)
    at HelloWorld.main(HelloWorld.java:31)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-06 01:12:51

抛出ArithmeticException是因为您的除法导致了不终止的十进制,如果显式为该方法提供舍入模式,则将不再抛出此异常。所以,试试这个

代码语言:javascript
复制
BigDecimal average = total.divide(test_count,  RoundingMode.HALF_UP);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42616046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档