使用BigDecimal计算
public class Test {
public static void main(String[] args) {
//如果是double类型的话,要转换类型,不然会计算错误 使用Double.toString(double)转成String,然后使用String构造方法,或使用BigDecimal的静态方法valueOf,如下
BigDecimal a = new BigDecimal("100");
BigDecimal b = new BigDecimal("50");
System.out.println("a+b="+a.add(b));//加法
System.out.println("a-b="+a.subtract(b));//减法
System.out.println("a*b="+a.multiply(b));//乘法
System.out.println("a/b="+a.divide(b));//除法
}
}
/*这边特别提一下,如果进行除法运算的时候,结果不能整除,有余数,这个时候会报java.lang.ArithmeticException:
,这边我们要避免这个错误产生,在进行除法运算的时候,针对可能出现的小数产生的计算,必须要多传两个参数
divide(BigDecimal,保留小数点后几位小数,舍入模式)
事例 System.out.println("a/b="+a.divide(b.ROUND_DOWN));
舍入模式
ROUND_CEILING //向正无穷方向舍入
ROUND_DOWN //向零方向舍入
ROUND_FLOOR //向负无穷方向舍入
ROUND_HALF_DOWN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5
ROUND_HALF_EVEN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN
ROUND_HALF_UP //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6,也就是我们常说的“四舍五入”
ROUND_UNNECESSARY //计算结果是精确的,不需要舍入模式
ROUND_UP //向远离0的方向舍入*/
```