0
点赞
收藏
分享

微信扫一扫

五、带有小数点进行精确计算时,请选择 BigDecimal,而不是 double 或者 float

1、double 或者 float 存在的精度问题

当计算 1.03 - 0.42 时,按照常规得出的答案应该是 0.61

System.out.println(1.03 - 0.42 );

但是实际结果去确实 0.6100000000000001

0.6100000000000001

这显然不是我们需要的结果。若需要对带有小数点的数值进行精确计算,则需要使用 ​​BigDecimal​​。

2、使用 BigDecimal 改造
public static void subtract() {
// 实例化
BigDecimal num1 = new BigDecimal(1.03);
BigDecimal num2 = new BigDecimal(0.42);

/*
* setScale(int newScale, int roundingMode)
* 参数一:newScale 保留小数点几位
* 参数二:roundingMode 小数点保留的方式,比如 BigDecimal.ROUND_HALF_UP 就是四舍五入
*/
BigDecimal result = num1.subtract(num2).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(result);
}

结果

0.61


举报

相关推荐

0 条评论