直接上代码
public static void main(String[] args){
Double a = 7.77;
Double b = 3.33;
System.out.println(a-b);
System.out.println(new BigDecimal(a.toString()).subtract(new BigDecimal(b.toString())));
}
输出结果
4.4399999999999995
4.44
使用BigDecimal承载数据的类型最好是String类型,否则依然会出现误差
同时附上加减乘除的方法
public static void main(String[] args){
Double a = 7.77;
Double b = 3.33;
System.out.println(a-b);
//加
System.out.println(new BigDecimal(a.toString()).subtract(new BigDecimal(b.toString())));
//减
System.out.println(new BigDecimal(a.toString()).add(new BigDecimal(b.toString())));
//乘
System.out.println(new BigDecimal(a.toString()).multiply(new BigDecimal(b.toString())));
//除
///System.out.println(new BigDecimal(a.toString()).divide(new BigDecimal(b.toString())));
System.out.println(new BigDecimal(a.toString()).divide(new BigDecimal(b.toString()),BigDecimal.ROUND_HALF_DOWN));
}
注意在使用除法的时候,要指定舍入模式,否则在除不尽的情况下会报"Non-terminating decimal expansion; no exact representable decimal result"异常