因为浮点数无法用计算机中的二进制来精确表示,也就是说在计算时“误差是必然的,精确是偶然的”。如果在做一些有精度要求的计算时,普通double、float类型是不能满足需求的,好在Java给出BigDecimal类可以用来做高精度运算,其有效数字能够超过16位。下面分别从三个方面来介绍BigDecimal类的使用方法。
1、创建BigDecimal对象
BigDecimal b1 = new BigDecimal(Double.toString(0.48));
BigDecimal b2 = BigDecimal.valueOf(0.48);
2、调用BigDecimal进行加减乘除运算
b1.add(b2);
b1.subtract(b2);
b1.multiply(b2);
b1.divide(b2);
b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP);//scale 保留几位有效数字
b1.pow(int n)
b1.stripTrailingZeros();//返回BigDecimal b3。b3数值上等于b1,但移除了b1尾部所有的零
b1.toPlainString();//返回字符串,不是科学计数法形式。
3、将BigDecimal对象转换成基本数据类型的变量doube或float
首先要确定保留几位有效数字
b1=b1.setScale(2,BigDecimal.ROUND_HALF_UP)//保留两位有效数字
然后转换成基本数据类型
b1.doubleValue();
b1.floatValue();