Java Puzzlers之二:找零时刻

同样简单
public class Change{
    public static void main(String args[]){
        System.out.println(2.0-1.10);
    }

}

由于double类型的不精确性,可能你的结果为0.8999999999999999.
可做以下修改
public class Change{
    public static void main(String args[]){
        System.out.println(new BigDecimal("2.0").subtract(new BigDecimal("1.10")));
    }

}

此处需注意
BigDecimal的实例对象是不可变型
   如果如下使用将得不到正确结果
  
   BigDecimal x=new BigDecimal("2.0");
   BigDecimal y=new BigDecimal("1.10");
   x.subtract(y);
   

   应该
  
   BigDecimal x=new BigDecimal("2.0");
   BigDecimal y=new BigDecimal("1.10");
   x=x.subtract(y);
   

你可能感兴趣的:(java)