BigDecimal用于解决浮点型运算时结果出现失真的问题。
这里0.2+0.1等于0.3就出现了失真
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Test {
public static void main(String[] args) {
//BigDeciaml的使用:解决小数运算失真的问题
double a = 0.2;
double b = 0.1;
// double c = a+ b;
// System.out.println(c);
//提供的构造器可以把String转成BigDecimal
BigDecimal aa = new BigDecimal(Double.toString(a));
BigDecimal bb = new BigDecimal(Double.toString(b));
//推荐用第二种简化写法:相当于上一种写法,此法也是返回一个上面的这么一个东西,人家已经封装好了
BigDecimal a1 = BigDecimal.valueOf(a);
BigDecimal b1 = BigDecimal.valueOf(b);
BigDecimal c1 = a1.add(b1); //加法
BigDecimal d1 = a1.subtract(b1);//减法
BigDecimal e1 = a1.multiply(b1);//乘法
BigDecimal f1 = a1.divide(b1);//除法 除法运算时可能出问题,报错:无法精确表达结果 ,这个时候就要给一个精度位
BigDecimal f2 = a1.divide(b1,2, RoundingMode.HALF_UP); //精确几位,舍入模式
System.out.println(c1); //BigDecimal也重写了toString,不会把地址给你而是输出值
}
}