需要知道精确结果, 不能用float或者double. 用int, 或者BigDecimal, 下面是一个小例子: 计算1元钱钱可以买多少糖果. 其中糖果一毛钱一个. 
//错误的, 使用double型
public class InappropriateFloat {
   public static void main(String[] args) {
       double funds = 1.00;
       int itemsBought = 0;
       for (double price = .10; funds >= price; price += .10) {
           funds -= price;
           itemsBought++;
       }
       System.out.println(itemsBought + " items bought.");
       System.out.println("Change: ¥" + funds);
   }

//使用整型, 用分计算
public class IntVersion {
   public static void main(String[] args) {
       int itemsBought = 0;
       int funds = 100;
       for (int price = 10; funds >= price; price += 10) {
           itemsBought++;
           funds -= price;
       }
       System.out.println(itemsBought + " items bought.");
       System.out.println("Money left over: "+ funds + " cents");
   }
}//用BigDecimal计算
import java.math.BigDecimal;public class BigDecimalVersion {
   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);
   }
}这是Java高效编程上的例子。 
我测试过没有问题,你试下~~