BigDecimal
public class Demo3 { public static void main(String[] args) { //double和float采用近似值存储,会产生误差 // double a = 1.0; // double b = 0.9; // System.out.println(a-b); // 0.09999999999999998 // // //面试题 // double result = (1.4-0.5)/0.9; // System.out.println(result); //0.9999999999999999 //BigDecimal 精确计算浮点数 BigDecimal a = new BigDecimal("1.0"); BigDecimal b = new BigDecimal("0.9"); //减法 BigDecimal c = a.subtract(b); System.out.println(c); // 0.1 //加法 BigDecimal d = a.add(b); System.out.println(d); // 1.9 //乘法 BigDecimal e = a.multiply(b); System.out.println(e); // 0.90 //除法 BigDecimal f = new BigDecimal("1.4") .subtract(new BigDecimal("0.5")) .divide(new BigDecimal("0.9")); System.out.println(f); // 1 BigDecimal g = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP); //重载方法,保留两位小时 四舍五入 System.out.println(g); //3.33 } }