同上一篇的BigInteger相似,BigDecimal表示任意大小且精度完全准确的浮点数。
方法
multiply
scale表示小数位数,可以返回负数(整数且末尾有几个0)
**stripTrailingZeros()**化为末尾去掉多余0的数
**setScale()**设置小数位数:
BigDecimal d2 = d1.setScale(4, RoundingMode.HALF_UP); // 四舍五入,123.4568
BigDecimal d3 = d1.setScale(4, RoundingMode.DOWN); // 直接截断,123.4567
因为精度绝对准确,所以存在除不尽的情况,此时需要指定小数位数
除&取余得到数组分别为商和余数
BigDecimal[] dr = n.divideAndRemainder(m);
比大小
不用equals(),因为还要比较scale相同。
用compareTo,返回负数0正数对应小于等于大于:
d1.compareTo(d2)
实质上,BigDecimal是由BigInteger和一个scale表示的 同样是不可变对象