精度丢失
//精度丢失
System.out.println(0.1+0.2);
System.out.println(1.0-0.32);
System.out.println(1.015*100);
System.out.println(1.301/100);
BigDecimal
//注意new出来的 BigDecimal() 括号写字符串
BigDecimal b1=new BigDecimal("1.2");
//使用valueOf()
BigDecimal b2=BigDecimal.valueOf(1.2);
//求和
System.out.println(b2.add(b1));
//减
System.out.println(b2.subtract(b1));
//相乘
System.out.println(b2.multiply(b1));
//除
System.out.println(b2.divide(b1));
//算数异常
//当除不尽时会报错
BigDecimal b3=BigDecimal.valueOf(1);
BigDecimal b4=BigDecimal.valueOf(3);
//报错
System.out.println(b3.divide(b4));
//解决方案
//四舍五入
System.out.println(b3.divide(b4, RoundingMode.HALF_UP));
//向上取整
System.out.println(b3.divide(b4, RoundingMode.CEILING));
//向下取整
System.out.println(b3.divide(b4, RoundingMode.FLOOR));
保留小数位
System.out.println(b3.divide(b4,2, RoundingMode.FLOOR));
把BigDecimal转换为doubleValue
double doubleValue=b5.doubleValue();