前言
之所以深入了解这个函数的用法,发现还可这么使用
基本的Java知识推荐阅读:
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");
}
}
}