首页 > 解决方案 > BigDecimal 和舍入

问题描述

我一直在这里寻找答案:四舍五入和BigDecimal,但我遇到了麻烦。有人可以帮忙吗?

下面除法的实际结果是 11.469...

        BigDecimal a = new BigDecimal(0.32);
        
        BigDecimal b = new BigDecimal(2.79);
        
        BigDecimal diffPercent = (a.divide(b, 2, RoundingMode.HALF_EVEN)).multiply(HUNDRED);  // 11.00
        BigDecimal diffPercent = (a.divide(b, 4, RoundingMode.HALF_EVEN)).multiply(HUNDRED);  // 11.4700

我怎样才能得到 11.47(两位小数)?

标签: java

解决方案


BigDecimal bg = new BigDecimal("11.468");
MathContext mc = new MathContext(3); // 3 precision

// bg1 is rounded using mc
final BigDecimal round = bg.round(mc, RoundingMode.CEILING);
System.out.println(round);

发布,因为这是如何舍入的另一个示例


推荐阅读