详细分析BigDecimal基本知识(附Demo)

前言

之所以深入了解这个函数的用法,发现还可这么使用

在这里插入图片描述

基本的Java知识推荐阅读:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. 【Java项目】实战CRUD的功能整理(持续更新)

1. 基本知识

BigDecimal是Java中用于精确表示和操作任意精度的浮点数的类,特别适合用于金融计算等需要高精度的场景

与float和double相比,BigDecimal提供了更高的精度和更好的控制

  • 精度: BigDecimal可以表示任意精度的数值
  • 不变性: BigDecimal是不可变的,所有的操作都会返回一个新的BigDecimal对象
  • 舍入模式: 提供多种舍入模式,如UP, DOWN, HALF_UP等
方法描述
BigDecimal(String val)根据字符串值创建BigDecimal对象
add(BigDecimal augend)加法运算,返回this + augend
subtract(BigDecimal subtrahend)减法运算,返回this - subtrahend
multiply(BigDecimal multiplicand)乘法运算,返回this * multiplicand
divide(BigDecimal divisor)除法运算,返回this / divisor
divide(BigDecimal divisor, int scale, RoundingMode roundingMode)带有精度和舍入模式的除法
compareTo(BigDecimal val)比较两个BigDecimal对象
setScale(int newScale)设置小数点后位数
toString()返回BigDecimal对象的字符串表示

2. Demo

Demo 1: 基本加法操作

import java.math.BigDecimal;

public class BigDecimalDemo1 {
    public static void main(String[] args) {
        BigDecimal num1 = new BigDecimal("10.5");
        BigDecimal num2 = new BigDecimal("2.3");
        
        BigDecimal result = num1.add(num2);
        System.out.println("加法结果: " + result);  // 输出: 加法结果: 12.8
    }
}

Demo 2: 进行除法运算并设置精度

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

public class BigDecimalDemo2 {
    public static void main(String[] args) {
        BigDecimal num1 = new BigDecimal("10");
        BigDecimal num2 = new BigDecimal("3");
        
        BigDecimal result = num1.divide(num2, 2, RoundingMode.HALF_UP);
        System.out.println("除法结果: " + result);  // 输出: 除法结果: 3.33
    }
}

截图如下:

在这里插入图片描述

Demo 3: 精度与舍入

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

public class BigDecimalDemo3 {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("123.456789");
        
        // 设置精度
        BigDecimal result = num.setScale(3, RoundingMode.HALF_UP);
        System.out.println("精度设置结果: " + result);  // 输出: 精度设置结果: 123.457
    }
}

截图如下:

在这里插入图片描述

Demo 4: 比较两个BigDecimal对象

import java.math.BigDecimal;

public class BigDecimalDemo4 {
    public static void main(String[] args) {
        BigDecimal num1 = new BigDecimal("10");
        BigDecimal num2 = new BigDecimal("20");
        
        int comparison = num1.compareTo(num2);
        if (comparison < 0) {
            System.out.println("num1 小于 num2");
        } else if (comparison > 0) {
            System.out.println("num1 大于 num2");
        } else {
            System.out.println("num1 等于 num2");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值