码迷,mamicode.com
首页 > 其他好文 > 详细

BigDecimal类型数据的加减乘除运算

时间:2020-04-23 11:51:09      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:ansi   ati   操作   情况下   tip   源码   sub   异常   无限循环   

?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类型数据的加减乘除运算

标签:ansi   ati   操作   情况下   tip   源码   sub   异常   无限循环   

原文地址:https://www.cnblogs.com/H-Dream/p/12759665.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!