> 文档中心 > java中小数高精度类BigDecimal

java中小数高精度类BigDecimal

java中小数高精度类BigDecimal

  1. 用途 :让小数运算结果更加精确

  2. 常见的构造方法?
    - public BigDecimal(double val)
    - public BigDecimal(String val)

//public BigDecimal(double val); BigDecimal bigDecimal =new BigDecimal(0.1);System.out.println(bigDecimal);//0.1000000000000000055511151231257827021181583404541015625BigDecimal 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.1BigDecimal bigDecimal4 =new BigDecimal("10.0");System.out.println(bigDecimal4);//10.0

注意:如果期望结果更加精确的话,建议使用字符串参数的构造方法

  1. 常见的成员方法?
    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.33System.out.println(bd3);bd3 = bd1.divide(bd2, 2, BigDecimal.ROUND_UP);// 3.34System.out.println(bd3);bd3 = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP);// 3.33System.out.println(bd3);

牙刷城