BigDecimal num1=new BigDecimal(2.0);
BigDecimal num2=new BigDecimal(0.8);
BigDecimal result=num1.subtract(num2);
System.out.println("--result---  "+result);--result---  1.1999999999999999555910790149937383830547332763671875为什么会是这个结果啊?? 要怎么才能是 :1.2??

解决方案 »

  1.   

    构造 BigDecimal 的话,尽量使用字符串构造。
      

  2.   

    这个问题,可能无法根除,但是可以用Math的round方法,四舍五入啊!
      

  3.   

    BigDecimal 内部不是使用浮点数表示的,因此浮点小数转换为其内部的数据结构时会由于无法精确表示这个浮 点小数而导致在初始化时就不正确了。BigDecimal num2 = new BigDecimal(0.8);在构造出来后的值就已经不是 0.8 了,所以直接导致后面的计算结果不正确。只要记住,不要使用数值类型数据来构造 BigDecimal 就可以了。