BigDecimal的除法,需要指定计算答案的精度,那样肯定会报异常。
MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);
BigDecimal a = new BigDecimal(0.5);
BigDecimal bd1 = new;
BigDecimal("30000000000000000000000000000000000000000000000000000000000");
BigDecimal bd2 = new BigDecimal(3);
//MathContext,第一个参数表示你要保留几位小数,第二参数表示最后一位是取顶。
构造方法
BigDecimal一共有4个构造方法:
BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。(不建议采用)
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。
BigDecimal的除法,需要指定计算答案的精度,你那样肯定会报异常。虽然你知道答案为2.5,但计算机不知道你的精度为多少,会抛异常的。
我给你写一段,
MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);
//精度为2,舍入模式为大于0.5进1,否则舍弃。
BigDecimal a = new BigDecimal(0.5);
BigDecimal b = new BigDecimal(0.2);
System.out.println(a.divide(b,mc));
0.5,0.2加双引号,直接出答案2.5
也可以按楼上的方法做
BigDecimal 的 divide 是可以指定精度运算的:
BigDecimal a=new BigDecimal(0.5);
BigDecimal b=new BigDecimal(0.2);
System.out.println( a.divide(b) , 2 , BigDecimal.ROUND_HALF_UP );
// ROUND_HALF_UP是BigDecimal的一个常量,表示进行四舍五入的操作
BigDecimal bigDecimal1 = new BigDecimal(100.0);
BigDecimal bigDecimal2 = new BigDecimal(33.0);
BigDecimal b = bigDecimal1.divide(bigDecimal2,0,BigDecimal.ROUND_DOWN);
取整数