这个结果是正确的。float本来就是需要你来确定精度的。想想我们是怎么来比较两个float相等的,不就是确定一个delta比如0.00001,如果落在这个范围内就认为相等。

解决方案 »

  1.   

    用c也一样...
    系统的事...
    float就是这样 .这是硬件的问题 ... 是cup的问题
      

  2.   

    javascript也有这样的问题,那为什么好象asp、或vbscript没有这个问题呢?
      

  3.   

    这是数据类型的问题
    你用BigDecimal就不会有问题了
    《Effective Java》上写的
      

  4.   

    用BigDecimal也一样的问题,好怪呀?
      

  5.   

    //这个程序是Effective Java上提供的public static void main(String[] args) {
    final BigDecimal TEN_CENTS = new BigDecimal(".10");
    int itemsBought = 0;
    BigDecimal funds = new BigDecimal("1.00");
    for (BigDecimal price = TEN_CENTS;
    funds.compareTo(price) >= 0;
    price = price.add(TEN_CENTS)) {
    itemsBought++;
    funds = funds.subtract(price);
    }
    System.out.println(itemsBought + " items bought.");
    System.out.println("Money left over: $" + funds);
    }
      

  6.   

    DecimalFormat df = new DecimalFormat("0.00");//
    System.out.println(df.format(9/12));