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

在公司看项目代码,其中有一个做除法的方法没看懂,代码如下:
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);
else
return arg1.divide(arg2,2,BigDecimal.ROUND_HALF_DOWN);
}

慕虎7371278
浏览 126回答 2
2回答

长风秋雁

测试了下,代码如下: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也就是原对象的值没被改变啊~再仔细看看你哪写错了没吧!~

德玛西亚99

做的精度判断,精度高的向后,精度低的向前
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
CSS3