java中小数高精度类BigDecimal
-
用途 :让小数运算结果更加精确
-
常见的构造方法?
- public BigDecimal(double val)
- public BigDecimal(String val)
// public BigDecimal(double val);
BigDecimal bigDecimal =new BigDecimal(0.1);
System.out.println(bigDecimal);//0.1000000000000000055511151231257827021181583404541015625
BigDecimal bigDecimal2 =new BigDecimal(10.0);
System.out.println(bigDecimal2);//10
// public BigDecimal(String val);
BigDecimal bigDecimal3 =new BigDecimal("0.1");
System.out.println(bigDecimal3);//0.1
BigDecimal bigDecimal4 =new BigDecimal("10.0");
System.out.println(bigDecimal4);//10.0
注意:如果期望结果更加精确的话,建议使用字符串参数的构造方法
- 常见的成员方法?
public BigDecimal add(另一个BigDecimal的对象):+法运算
public BigDecimal subtract(另一个BigDecimal的对象):-法运算
public BigDecimal multiply(另一个BigDecimal的对象):*法运算
public BigDecimal divide(另一个BigDecimal的对象):/法运算
BigDecimal bd1 = new BigDecimal("0.1");
BigDecimal bd2 = new BigDecimal("0.2");
// public BigDecimal add()
BigDecimal db3 = bd1.add(bd2);
System.out.println(db3);//0.3
// public BigDecimal subtract()
BigDecimal db4 = bd1.subtract(bd2);
System.out.println(db4);//-0.1
// public BigDecimal multiply()
BigDecimal db5 = bd1.multiply(bd2);
System.out.println(db5);//0.02
// public BigDecimal divide()
BigDecimal db6 = bd1.divide(bd2);
System.out.println(db6);//0.5
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
第一个参数:另一个BigDecimal的对象
第二个参数:保留几位小数
第三个参数:舍入模式
ROUND_DOWN:去尾
ROUND_UP:前进
ROUND_HALF_UP:四舍五入
BigDecimal bd1 = new BigDecimal("10.0");
BigDecimal bd2 = new BigDecimal("3.0");
BigDecimal bd3 = bd1.divide(bd2);
System.out.println(bd3);
bd3 = bd1.divide(bd2, 2, BigDecimal.ROUND_DOWN);// 3.33
System.out.println(bd3);
bd3 = bd1.divide(bd2, 2, BigDecimal.ROUND_UP);// 3.34
System.out.println(bd3);
bd3 = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP);// 3.33
System.out.println(bd3);