📜  Java中的 BigDecimal 类(1)

📅  最后修改于: 2023-12-03 15:31:50.273000             🧑  作者: Mango

Java中的BigDecimal类

在 Java 中,BigDecimal 类用来表示高精度的数字,它提供了在任意位数上进行精确计算的能力。

创建BigDecimal对象

可以通过以下方式创建 BigDecimal 对象:

1. 将一个整数转换为 BigDecimal 对象:
int num = 10;
BigDecimal bigDecimal = new BigDecimal(num);
2. 将一个 double 类型的数值转换为 BigDecimal 对象:
double d = 2.5;
BigDecimal bigDecimal = new BigDecimal(d);

注:由于 double 类型的数值会存在精度问题,因此使用这种方法需要注意结果的精确性。

3. 将一个字符串转换为 BigDecimal 对象:
String str = "123.45";
BigDecimal bigDecimal = new BigDecimal(str);
BigDecimal的常用方法
1. 加法
BigDecimal a = new BigDecimal("2.5");
BigDecimal b = new BigDecimal("3.7");
BigDecimal c = a.add(b);
2. 减法
BigDecimal a = new BigDecimal("2.5");
BigDecimal b = new BigDecimal("3.7");
BigDecimal c = a.subtract(b);
3. 乘法
BigDecimal a = new BigDecimal("2.5");
BigDecimal b = new BigDecimal("3.7");
BigDecimal c = a.multiply(b);
4. 除法
BigDecimal a = new BigDecimal("2.5");
BigDecimal b = new BigDecimal("3.7");
BigDecimal c = a.divide(b); // 抛出异常
BigDecimal c = a.divide(b,2,BigDecimal.ROUND_HALF_UP); // 四舍五入保留2位小数

由于除法可能会抛出异常,建议在使用时指定尽可能精确的小数点位数,比如 a.divide(b,2,BigDecimal.ROUND_HALF_UP) 表示将 a 除以 b,保留 2 位小数,并采用四舍五入方式。

5. 比较大小
BigDecimal a = new BigDecimal("2.5");
BigDecimal b = new BigDecimal("3.7");
int result = a.compareTo(b);

比较结果为:

  • result = -1,表示 a 小于 b
  • result = 0,表示 a 等于 b
  • result = 1,表示 a 大于 b
总结

Java 中的 BigDecimal 类提供了高精度计算的能力,可以用于需要精确计算的场景,如货币计算、税务计算等。在使用 BigDecimal 时,需要注意精确度和性能问题,避免由于计算精度不足而导致错误结果。