用 * 乘以2个数值变量,会导致精度差异,因此用BigDecimal的multiply方法做乘法运算

 DecimalFormat df = new DecimalFormat("#.00");
        Double a1 = 0.03;
        Double a2 = 41.5;
        String format = df.format(a1 * a2);
        System.out.println(format);

用 * 乘以2个数值变量,会导致精度差异,因此用BigDecimal的multiply方法做乘法运算_第1张图片

 Double a1 = 0.03;
 Double a2 = 41.5;
 BigDecimal p1 = new BigDecimal(Double.toString(a1));
 BigDecimal p2 = new BigDecimal(Double.toString(a2));
 double value = p1.multiply(p2).doubleValue();

**: a1 * a2 计算的结果是1.244999…
**:p1.multiply(p2) 计算的结果是1.245
总结:以后不要用*直接乘,用方法来计算

如果需要按照小数点最后一位来四舍五入,建议采用BigDecimal.ROUND_HALF_UP

 BigDecimal decimal = new BigDecimal(value).setScale(2, BigDecimal.ROUND_HALF_UP);

你可能感兴趣的:(java)