【总结】Java BigDecimal

Java BigDecimal

应用场景

  • 适用于商业计算以及精密计算
  • 可以实现加减乘除
  • 可以实现精确数位的控制
  • 可以实现数值间比较

常用方法

方法简介
new BigDecimal(“10.0000”)根据字符串创建对象,推荐使用
new BigDecimal(40)根据数字创建对象
BigDecimal add(BigDecimal bigDecimal)加法运算
BigDecimal subtract(BigDecimal bigDecimal)减法运算
BigDecimal multiply(BigDecimal bigDecimal)乘法运算
BigDecimal divide(BigDecimal bigDecimal, int scale, RoundingMode roundingMode)除法运算,可指定保留位数和规则
int scale()获取小数位数
BigDecimal setScale(int newScale, RoundingMode roundingMode)重新设置小数位数
int compareTo(BigDecimal val)比较大小:“前”大于“后”则返回 1;“前”小于“后”则返回 -1;相等则返回 0

BigDecimalDemo

package JavaDecimal;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalDemo {

    public static void main(String[] args) {
        // ==================== 1. 构造方法 ====================
        BigDecimal bigDecimal1 = new BigDecimal("10.0000");
        BigDecimal bigDecimal2 = new BigDecimal(40);
        BigDecimal bigDecimal3 = new BigDecimal("1.245");
        // ==================== 2. 常用方法 ====================
        // (1) 加减乘除四则运算,返回值均为一个新的 BigDecimal 对象
        BigDecimal add = bigDecimal1.add(bigDecimal2);
        BigDecimal subtract = bigDecimal1.subtract(bigDecimal2);
        BigDecimal multiply = bigDecimal1.multiply(bigDecimal2);
        BigDecimal divide1 = bigDecimal1.divide(bigDecimal2, 1, RoundingMode.HALF_UP);
        BigDecimal divide2 = bigDecimal1.divide(bigDecimal2, 1, RoundingMode.HALF_DOWN);
        System.out.println(add); // 50.0000
        System.out.println(subtract); // -30.0000
        System.out.println(multiply); // 400.0000
        System.out.println(divide1); // 0.3
        System.out.println(divide2); // 0.2
        // (2) 获取小数位数,返回值为 int 类型
        int scale1 = bigDecimal1.scale();
        int scale2 = bigDecimal2.scale();
        System.out.println(scale1); // 4
        System.out.println(scale2); // 0
        // (3) 设置保留 X 位小数,返回值为一个新的 BigDecimal 对象
        BigDecimal scale3 = bigDecimal3.setScale(2, RoundingMode.HALF_UP);
        BigDecimal scale4 = bigDecimal3.setScale(2, RoundingMode.HALF_DOWN);
        System.out.println(scale3); // 1.25
        System.out.println(scale4); // 1.24
        // (4) BigDecimal 大小比较,“前”大于“后”则返回 1;“前”小于“后”则返回 -1;相等则返回 0
        System.out.println(bigDecimal1.compareTo(bigDecimal2)); // -1
        System.out.println(bigDecimal2.compareTo(bigDecimal3)); // 1
        System.out.println(bigDecimal1.compareTo(new BigDecimal(10))); // 0
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值