输出结果中的那一串零是如何产生的?如何去除?

img

img


第二张图片中,费用支出为78.99000000000001元,为什么会产生那一串零?如何解决?

double精度丢失导致的,可以保留小数,或者用BigDecimal 去计算,可以参考下这个

img

 public static void main(String[] args) {
         double a=0.1+0.2;
        System.out.println("double计算"+a);
        BigDecimal ab=BigDecimal.valueOf(a);
        double b = ab.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println("保留两位"+b);

        BigDecimal bigDecimal=BigDecimal.valueOf(0.2);
        BigDecimal add=bigDecimal.add(BigDecimal.valueOf(0.1));
        System.out.println("BigDecimalAdd计算"+add);
    }