呵呵,你学过 计算方法 没有??
在计算机中的浮点数都是近似的数字。因为有些十进制数字是二进制数字无法表示的,只能做一定程度的近似。
所以就会有现在这样的结果,这不是JAVA的错,而是现代的个人计算机还不能达到非常高的精度。
还有 用 double 类型的时候,用 ++ -- 等运算符都用可能出现问题

解决方案 »

  1.   

    Microsoft Windows 2000 [Version 5.00.2195]
    (C) 版权所有 1985-1998 Microsoft Corp.D:\>c:C:\>javac *.javaC:\>java test
    0.09000000000000001
    1.3877787807814457E-17C:\>看什么?输出结果完全正常!
      

  2.   

    我的意思是怎样解决这个问题,double类型的数据怎样精确表示啊
      

  3.   

    public class test
    { public static void main(String[] args)
    {
    double a =  0.07;
    double b =  0.02;
    double c = (a + b);
    double d = 0.09; System.out.println((float)c);
    System.out.println((int)(c - d));
    }
    }