BigDecimal应用场景
Double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理,这时候使用Double经常会出现丢失精度,但业务对精度要求又比较严格,使用java.math.BigDecimal类进行精确计算:
BigDecimal使用:
- 构造方法推荐使用:
BigDecimal nums = new BigDecimal("66.66666");
- 常用的几种计算:
@Test
public void testBigDecimal01(){
BigDecimal result = null;
BigDecimal num = new BigDecimal("66.66666");
BigDecimal num2 = new BigDecimal("88.88888");
//加
result = num.add(num2);
System.out.println(result.toString());
//减
result = num2.subtract(num);
System.out.println(result.toString());
//乘
result = num.multiply(num2);
System.out.println(result.toString());
//除,保留两位小数,四舍五入
(如果不指定精度出现除不尽的情况时会抛异常)。
result = num2.divide(num , 2 , RoundingMode.HALF_UP);
System.out.println(result.toString());
//小数点左移动
result = num.movePointLeft(2);
System.out.println(result.toString());
//小数点右移动
result = num.movePointRight(2);
System.out.println(result.toString());
//判断是否相等:
BigDecimal num3 = new BigDecimal("66.6666600");
//会根据精度判断:1.3和1.30判断是不相等的
System.out.println(num.equals(num3));
//仅仅是数值上的判断:1.3和1.30是相等的。返回值:0-相等 -1-不相等
System.out.println(num.compareTo(num3));
}
总结:这个类用起来是真的舒服。
注意:有些框架并不支持该类型。