比较两个数字

Med*_*das 0 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;
  }
Run Code Online (Sandbox Code Playgroud)

输出是:

126.0
1900.0
Run Code Online (Sandbox Code Playgroud)

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

slo*_*rop 6

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

else if(compare > 900.0);
Run Code Online (Sandbox Code Playgroud)

所以这一行不依赖于该else子句,并且将始终执行:

stockWeight += 900;
Run Code Online (Sandbox Code Playgroud)

基本上,无论是否在最后一个打印语句之前,您总是会在stockWeight中添加900 compare > 900.0.