BigDecimal运算

一、代码示例

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值