BigDecimal
BigDecimal支持数据类型转换
通过new BigDecimal构造方法
BigDecimal支持加减乘除操作
对应的默认小数点位数
| Operation | Preferred Scale of Result |
|---|---|
| Add | max(addend.scale(), augend.scale()) |
| Subtract | max(minuend.scale(), subtrahend.scale()) |
| Multiply | multiplier.scale() + multiplicand.scale() |
| Divide | dividend.scale() - divisor.scale() |
如下操作了一下BigDecimal对浮点数的操作
System.err.println(4&12);
System.err.println("19/10 = "+ new BigDecimal(19).divide(new BigDecimal(10)));
System.err.println("21/110= "+ new BigDecimal(21).divide(new BigDecimal(110),3, RoundingMode.HALF_UP));
System.err.println("new BigDecimal(0.11) 结果 ->"+new BigDecimal(0.11));
System.err.println("new BigDecimal(Double.toString(0.11)) 结果 ->"+new BigDecimal(Double.toString(0.11)));
System.out.println();
System.err.println(new BigDecimal(0.11,new MathContext(23,RoundingMode.HALF_UP)));
System.err.println(new BigDecimal(0.11).setScale(23,RoundingMode.HALF_UP));
System.out.println();
System.err.println(new BigDecimal(Double.toString(0.11),new MathContext(23,RoundingMode.HALF_UP)));
System.err.println(new BigDecimal(Double.toString(0.11)).setScale(23,RoundingMode.HALF_UP));

需要注意的点
数据转换时,浮点数要转成String类型,否则精度不一致
尤其除法操作时,若商无限死循环,在没有设定小数位时降抛异常
❀❀ (ง •_•)ง little little 🦆🦆 ❀❀❀❀ ♕♕♕♕♕

浙公网安备 33010602011771号