BigDecimal是Java中一个用于高精确度计算的类。一般在需要比double和float精度更高的精确计算时使用。
例如,我们知道在Java中0.1 0.2 的结果并不是0.3,而是0.30000000000000004。这是因为在二进制表示中无法精确表示十进制小数0.1和0.2。如果需要得到精确的结果,我们需要使用BigDecimal来进行计算。
BigDecimal类支持任意精度的十进制数,提供了加、减、乘、除等常用的运算操作,并且还支持转换、取舍等操作。我们可以通过以下方式来创建BigDecimal对象:
BigDecimal num1 = new BigDecimal("0.1");BigDecimal num2 = new BigDecimal("0.2");
接下来,我们可以使用加、减、乘、除等运算操作进行计算:
// 加法BigDecimal result1 = num1.add(num2);// 减法BigDecimal result2 = num1.subtract(num2);// 乘法BigDecimal result3 = num1.multiply(num2);// 除法,需要指定保留的小数位数以及舍入方式BigDecimal result4 = num1.divide(num2, 10, RoundingMode.HALF_UP);
除法操作需要指定保留的小数位数以及舍入方式。后面的参数10表示保留10位小数,RoundingMode.HALF_UP表示四舍五入。
如果需要转换成其他类型进行使用,我们可以使用intValue、longValue、floatValue、doubleValue等方法进行转换。例如:
int intValue = result1.intValue();
最后,需要注意的是BigDecimal是一个不可变对象,一旦创建就无法修改。任何运算操作都会返回一个新的BigDecimal对象。