BigDecimal的运算——加减乘除,有关金额的计算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BigDecimal的运算——加减乘除,有关金额的计算相关的知识,希望对你有一定的参考价值。
参考技术A 这里对比了两种形式,第一种直接value写数字的值,第二种用string来表示加法 add()函数 减法subtract()函数
乘法multiply()函数 除法divide()函数 绝对值abs()函数
我这里承接上面初始化Bigdecimal分别用string和数进行运算对比
————————————————
BigDecimal类型数据的加减乘除运算
?Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。如果我们需要精确计算的结果,需要使用BigDecimal类来操作。
BigDecimal所创建的是对象,所以不能使用传统的+、-、*、/ 等算术运算符直接对其对象进行数学运算,必须调用其相对应的方法。方法中的参数也必须是BigDecimal对象。
BigDecimal类型数据加减乘除调用方法:
1、加法
BigDecimal a= new BigDecimal("100.235"); BigDecimal b= new BigDecimal("3.214"); //相加 BigDecimal result= a.add(b); //结果保留两位小数(四舍五入) BigDecimal result2 = result.setScale(2, RoundingMode.HALF_UP);
2、减法
BigDecimal a= new BigDecimal("100.235"); BigDecimal b= new BigDecimal("3.214"); //相减 BigDecimal result= a.subtract(b); //结果保留两位小数(四舍五入) BigDecimal result2= result.setScale(2, RoundingMode.HALF_UP);
3、乘法
BigDecimal a= new BigDecimal("100.235"); BigDecimal b= new BigDecimal("3.214"); //相乘 BigDecimal result= a.multiply(b); //结果保留两位小数(四舍五入) BigDecimal result2= result.setScale(2, RoundingMode.HALF_UP);
4、除法
BigDecimal a= new BigDecimal("100.235"); BigDecimal b= new BigDecimal("3.214"); //相除,结果保留两位小数(四舍五入) BigDecimal result= a.divide(b, 2, RoundingMode.HALF_UP);
注意:用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出java.lang.ArithmeticException: Non-terminating decimal expansion异常。
同时注意divide有两个重载的方法,一个是传两个参数,一个是传三个参数。可以看源码。
以上是关于BigDecimal的运算——加减乘除,有关金额的计算的主要内容,如果未能解决你的问题,请参考以下文章