比较两个数字

时间:2011-05-22 18:51:40

标签: java double

我有这个程序:

double stockWeight = 1;
    if(data[0] > 9 )        
        stockWeight = 1000*R(data[0]/10);
    double compare = data[0]*100-stockWeight;
    System.out.println(compare);
    if(compare > 300.0 && compare <=600.0)
        stockWeight += 300;
    else if(compare > 600.0 && compare <= 900.0)
        stockWeight += 600;
    else if(compare > 900.0);
        stockWeight += 900;

        System.out.println(stockWeight);

 ///////////////////////////////////
   private int R(double D){
      int howBIG = 1;
      if (D >= 100){howBIG = 10;}
      else if(D >= 1000){howBIG = 100;}
      DecimalFormat F = new DecimalFormat("#");
      return Integer.valueOf(F.format(D/howBIG))*howBIG;
  }

输出是:

126.0
1900.0

这里的所有数字都是双重类型。 data[0] = 11.26 为什么我的电脑认为126.0大于900.0? R方法基本上是10(100)的div函数,如果大于100(1000),则给出整数

1 个答案:

答案 0 :(得分:6)

您可能会看到令人困惑的结果,因为您在上一个其他声明中使用了分散的分号:

else if(compare > 900.0);

所以这一行并不依赖于else子句,而且总是会被执行:

stockWeight += 900;

基本上,无论是否compare > 900.0,您都会在最后一个打印语句之前立即向stockWeight添加900。