这么解决这个float丢失精度的问题
  float f = 1.1f;
  f =  f-0.1f;
 System.out.println(f);
这个时候输出的是0.999999而不是1  这个如何让他输出1,谢谢!

解决方案 »

  1.   

    了解一下java.math.BigDecimal
    注意需要用它接收String参数的构造方法。
      

  2.   

    我的在eclipse j2ee版中输出是1.0
      

  3.   

    我工作用的环境是 STS2.9, JDK7.0.09.
    输出结果也是1.0.
    同问,什么情况下会输出0.999999?
      

  4.   

    System.out.println(new BigDecimal("1.1").subtract(new BigDecimal("0.1")));并不是所有的小数都可以用二进制浮点数精确表示。LS几个输出1.0的可以换成1.1-0.2试试。
    在需要精确答案的地方,避免使用float 和double。
    对于货币计算,要用int, long和BigDecimal
      

  5.   

    十进制数的二进制表示可能不够精确,浮点数或是双精度浮点数无法精确表示的情况并不少见。浮点数值没办法用十进制来精确表示的原因要归咎于CPU表示浮点数的方法。这样的话您就可能会牺牲一些精度,有些浮点数运算也会引入误差。
      

  6.   

    谢谢大家了  是我JDK版本比较低的原因  把eclipse里面preference-java-jdk compiler从5.0改到6.0就没这个问题了