Java BigDecimal类型的 加减乘除运算不能像C#一样简单,需要调用方法:
加法:add
减法:subtract
乘法:multiply
除法:divide
可参考下面代码:
BigDecimal bignum1 = new BigDecimal(“10”);
BigDecimal bignum2 = new BigDecimal(“5”);
BigDecimal bignum3 = null;
//加法
bignum3 = bignum1.add(bignum2);
System.out.println(“求和:” + bignum3);
//减法
bignum3 = bignum1.subtract(bignum2);
System.out.println(“求差:” + bignum3);
//乘法
bignum3 = bignum1.multiply(bignum2);
System.out.println(“乘法积:” + bignum3);
//除法
bignum3 = bignum1.divide(bignum2);
System.out.println(“除法结果:” + bignum3);
在进行除法计算时,需要商是无线循环小数时,会抛出异常java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result,此时需要设置小数点后的余位!例如:
bignum3 = bignum1.divide(bignum2,2,BigDecimal.ROUND_UP );
//取整
BigDecimal bd = new BigDecimal(“12.1”);
long l = bd.setScale( 0, BigDecimal.ROUND_UP ).longValue(); // 向上取整
long l = bd.setScale( 0, BigDecimal.ROUND_DOWN ).longValue(); // 向下取整
//保留小数位可以通过setScale()方法设置小数位,和取整/取余的方式
//如果是要对整数取余就要通过DecimalFormat类来做格式化处理,例如:
数值12 保留两位小数:
DecimalFormat df = new DecimalFormat(“#.00”);
BigDecimal date = df.format(new BigDecimal(12)); // date为12.00