Java 中 BigDecimal 类型的变量的使用

发布时间 2023-06-29 13:10:13作者: Rover20230226

BigDecimal 类的作用:

  Java 的 BigDecimal 类 用于进行高精度的十进制运算,避免了使用浮点数造成的精度丢失问题。

 

BigDecimal 提供了许多方法来执行基本的数学运算,如加减乘除、比较、区域等。

 

BigDecimal 类的常见用法示例:

1、创建 BigDecimal 对象:

BigDecimal number = new BigDecimal("10.25");
BigDecimal anotherNumber = BigDecimal.valueOf(5.75);

2、基本运算

BigDecimal sum = number.add(anotherNumber); // 加法
BigDecimal difference = number.subtract(anotherNumber); // 减法
BigDecimal product = number.multiply(anotherNumber); // 乘法
BigDecimal quotient = number.divide(anotherNumber); // 除法

3、比较

int result = number.compareTo(anotherNumber); // 比较大小,返回-1、0或1
boolean isEqual = number.equals(anotherNumber); // 判断是否相等
boolean isGreaterThan = number.compareTo(anotherNumber) > 0; // 判断是否大于

4、取余

BigDecimal remainder = number.remainder(anotherNumber); // 取余数

5、格式化输出

String formattedNumber = number.setScale(2, RoundingMode.HALF_UP).toString(); // 格式化为两位小数

注意:在进行运算时,必须使用BigDecimal的方法,而不能使用普通的算术操作符(如+、-、*、/),否则可能会导致精度丢失。

 

进阶

6、取整

BigDecimal number = new BigDecimal("10.25");
BigDecimal roundedNumber = number.setScale(0, RoundingMode.HALF_UP); // 将数值四舍五入为整数

7、取绝对值

BigDecimal number = new BigDecimal("-10.25");
BigDecimal absoluteValue = number.abs(); // 返回绝对值

8、求幂

BigDecimal base = new BigDecimal("2");
BigDecimal exponent = new BigDecimal("3");
BigDecimal power = base.pow(exponent.intValue()); // 求幂

9、平方根

BigDecimal number = new BigDecimal("25");
BigDecimal squareRoot = BigDecimalMath.sqrt(number, MathContext.DECIMAL128); // 计算平方根,需要使用BigDecimalMath类

注意:某些方法(如平方根)可能需要使用到第三方库,例如 Apache Commons Math(BigDecimalMath)。

 

10、判断是否小于 0

BigDecimal number = new BigDecimal("-1.25");
number.compareTo(BigDecimal.ZERO) < 0

// 如果 number 小于 0,则判断小于 0
// 如果 number 大于0,则判断大于 0