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

版权声明:本文为weixin_38987366原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_38987366/article/details/105318973