1、当 value 的值的类型为 int 时,new BigDecimal(value) 和 BigDecimal.valueOf(value) 的区别
根据 BigDecimal 类的源码可以看出,new BigDecimal(value) 是先创建一个 BigDecimal 类的对象,然后对 BigDecimal 类的成员变量进行赋值;而 BigDecimal.valueOf(value) 则会先判断能否取缓存中的 BigDecimal 对象,如果 value 的值比较大再去创建 BigDecimal 的对象,以达到重用的目的。
2、两个 BigDecimal 类的对象相除,获取整形结果
通过设置要精确的小数位数(第二个参数 scale)、舍入模式(第三个参数)实现:
1 value1.divide(value2, 0, BigDecimal.ROUND_DOWN).intValue();