为了账号安全,请及时绑定邮箱和手机立即绑定

第二个if判断很不明白,为什么要做scale判断,除法计算的四舍五入方向为什么要做相应的变化?

第二个if判断很不明白,为什么要做scale判断,除法计算的四舍五入方向为什么要做相应的变化?

慕虎7371278 2022-07-08 15:07:04
在公司看项目代码,其中有一个做除法的方法没看懂,代码如下:public static BigDecimal div(BigDecimal arg1, BigDecimal arg2) {if(arg2.compareTo(new BigDecimal(0))==0) return new BigDecimal(0);if(arg1.scale()<arg2.scale())return arg1.divide(arg2,2,BigDecimal.ROUND_HALF_UP);elsereturn arg1.divide(arg2,2,BigDecimal.ROUND_HALF_DOWN);}
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

测试了下,代码如下:
public static void main(String args[]) {
BigDecimal b = new BigDecimal(1);
BigDecimal a = b.add(new BigDecimal(2));
System.out.println(b);
System.out.println(a);
}
输出结果为:1 3
也就是原对象的值没被改变啊~
再仔细看看你哪写错了没吧!~

查看完整回答
反对 回复 2022-07-11
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

做的精度判断,精度高的向后,精度低的向前

查看完整回答
反对 回复 2022-07-11
  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信