BigDecimal
在运算时,float类型和double很容易丢失精度
所以为了能精确地表示、计算浮点数,Java提供了BigDecimal
构造方法
public BigDecimal(String va1);
double d = 1.35464687346876431354;
double d1 = 1.35464687344687831354;
BigDecimal bd = new BigDecimal(d);
BigDecimal bd1 = new BigDecimal(d1);
BigDecimal zhi1 = bd.add(bd1);//加法
BigDecimal zhi2 = bd.subtract(bd1);//减法
BigDecimal zhi3 = bd.multiply(bd1);//乘法
//除法
1.能整除
double d = 10;
double d1 = 2;
BigDecimal bd = new BigDecimal(d);
BigDecimal bd1 = new BigDecimal(d1);
BigDecimal zhi4 = bd.divide(bd1);//除法 5
2.不能整除
不能整除时需要规定要保留的位数 及取舍方式(舍入模式的详细信息查看API)
double d = 10;
double d1 = 3;
BigDecimal bd = new BigDecimal(d);
BigDecimal bd1 = new BigDecimal(d1);
BigDecimal zhi4 = bd.divide(bd1,30,BigDecimal.ROUND_DOWN);//保留30位 接近0的舍入模式
System.out.println(1==0.99999999999999); //true 无限接近时就是这个数字