BigDecimal 是 Java 提供的一个用于处理任意精度小数的类。与 double 或 float 类型相比,BigDecimal 可以准确地表示和计算大范围的小数值,避免了浮点数运算时的精度损失。
下面是一些常用的 BigDecimal 方法和操作:
1.创建 BigDecimal 对象:
BigDecimal bigDecimal1 = new BigDecimal("123.456"); BigDecimal bigDecimal2 = BigDecimal.valueOf(789.012);
2.基本运算符和方法:
- 加法:
add(BigDecimal augend) - 减法:
subtract(BigDecimal subtrahend) - 乘法:
multiply(BigDecimal multiplicand) - 除法:
divide(BigDecimal divisor, int scale, RoundingMode roundingMode) - 求余:
remainder(BigDecimal divisor) - 幂运算:
pow(int exponent) - 绝对值:
abs() - 比较:
compareTo(BigDecimal val)
BigDecimal sum = bigDecimal1.add(bigDecimal2); BigDecimal difference = bigDecimal1.subtract(bigDecimal2); BigDecimal product = bigDecimal1.multiply(bigDecimal2); BigDecimal quotient = bigDecimal1.divide(bigDecimal2, 10, RoundingMode.HALF_UP); BigDecimal remainder = bigDecimal1.remainder(bigDecimal2); BigDecimal power = bigDecimal1.pow(2); BigDecimal absolute = bigDecimal1.abs(); int comparison = bigDecimal1.compareTo(bigDecimal2);
- 3.转换和舍入:
- 转换为其他数据类型:
intValue(),longValue(),doubleValue() - 转换为字符串:
toString() - 设置小数位数和舍入方式:
setScale(int newScale, RoundingMode roundingMode)
int intValue = bigDecimal1.intValue(); long longValue = bigDecimal1.longValue(); double doubleValue = bigDecimal1.doubleValue(); String stringValue = bigDecimal1.toString(); BigDecimal scaled = bigDecimal1.setScale(2, RoundingMode.HALF_UP);
- 4.其他常用方法:
- 比较大小:
max(BigDecimal val),min(BigDecimal val) - 取整:
stripTrailingZeros() - 判断是否为整数或负数:
isInteger(),signum()
BigDecimal max = bigDecimal1.max(bigDecimal2); BigDecimal min = bigDecimal1.min(bigDecimal2); BigDecimal noTrailingZeros = bigDecimal1.stripTrailingZeros(); boolean isInteger = bigDecimal1.isInteger(); int signum = bigDecimal1.signum();