一、代码示例
package com.ykq;
import java.math.BigDecimal;
/**
* @author: kqyin
* @date: 2021/9/15 10:25
* @Description:
*/
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal bigDecimal1 = new BigDecimal("-4");
BigDecimal bigDecimal2 = new BigDecimal("3");
// 加法运算
BigDecimal addBigDecimal = bigDecimal1.add(bigDecimal2);
System.out.println("加法运算: " + bigDecimal1 + " + " + bigDecimal2 + " = " + addBigDecimal);
// 减法运算
BigDecimal subBigDecimal = bigDecimal1.subtract(bigDecimal2);
System.out.println("减法运算: " + bigDecimal1 + " - " + bigDecimal2 + " = " + subBigDecimal);
// 乘法运算
BigDecimal multBigDecimal = bigDecimal1.multiply(bigDecimal2);
System.out.println("乘法运算: " + bigDecimal1 + " * " + bigDecimal2 + " = " + multBigDecimal);
// 除法运算,divide有多个重载方法
// 单一参数的,当除不尽时会报java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
// BigDecimal divBigDecimal = bigDecimal1.divide(bigDecimal2);
// System.out.println(divBigDecimal);
// 第一个参数为除数,第二位参数表示保留几位位小数,第三位参数表示保留小数时的取数方式
// BigDecimal.ROUND_HALF_UP表示四舍五入
BigDecimal divBigDecimal = bigDecimal1.divide(bigDecimal2, 2, BigDecimal.ROUND_HALF_UP);
System.out.println("除法运算: " + bigDecimal1 + " / " + bigDecimal2 + " = " + divBigDecimal);
// 取相反数
BigDecimal negaBigDecimal = bigDecimal1.negate();
System.out.println("取相反数: " + "-" + bigDecimal1 + " = " + negaBigDecimal);
// 取绝对值
BigDecimal absBigDecimal = bigDecimal1.abs();
System.out.println("取绝对值: " + "|" + bigDecimal1 + "|" + " = " + absBigDecimal);
// 取较大值
BigDecimal maxDecimal = bigDecimal1.max(bigDecimal2);
System.out.println("取较大值: " + "max("+ bigDecimal1 + ", " + bigDecimal2 + ")" + " = " + maxDecimal);
// 取较小值
BigDecimal minDecimal = bigDecimal1.min(bigDecimal2);
System.out.println("取较小值: " + "min("+ bigDecimal1 + ", " + bigDecimal2 + ")" + " = " + minDecimal);
// 指数运算
BigDecimal powDecimal = bigDecimal1.pow(bigDecimal2.intValue());
System.out.println("指数运算: " + bigDecimal1 + "^" + bigDecimal2 + " = " + powDecimal);
// 小数点左移
BigDecimal movePointLeftDecimal = bigDecimal1.movePointLeft(bigDecimal2.intValue());
System.out.println(bigDecimal1 + "小数点左移" + bigDecimal2 + "位:" + movePointLeftDecimal);
// 小数点右移
BigDecimal movePointRightDecimal = bigDecimal1.movePointRight(bigDecimal2.intValue());
System.out.println(bigDecimal1 + "小数点右移" + bigDecimal2 + "位:" + movePointRightDecimal);
// 余数运算
BigDecimal remainderDecimal = bigDecimal1.remainder(bigDecimal2);
System.out.println("余数运算: " + bigDecimal1 + " % " + bigDecimal2 + " = "+ remainderDecimal);
}
}
二、运行结果

三、对于除法运算的进一步解释
请参考如下链接:
https://www.cnblogs.com/yingchen/p/5459501.html

被折叠的 条评论
为什么被折叠?



