目录
- 前言
- 1. 基本知识
- 2. Demo
前言
之所以深入了解这个函数的用法,发现还可这么使用
基本的Java知识推荐阅读:
- java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
- 【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");}}
}