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();