Java 比较两个数字

Java 比较两个数字,java,double,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)

我有一个节目:

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;
  }
这里的数字都是双精度的<代码>数据[0]=11.26 为什么我的电脑认为126.0大于900.0??
R方法基本上是10(100)的div函数,如果大于100(1000),则给出整数

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

else if(compare > 900.0);
因此,此行不依赖于
else
子句,将始终执行:

stockWeight += 900;

基本上,您总是在最后一次打印语句之前将900添加到股票重量中,无论是否
compare>900.0
您可能会看到令人困惑的结果,因为您的最后一次else语句中出现了分号:

else if(compare > 900.0);
因此,此行不依赖于
else
子句,将始终执行:

stockWeight += 900;

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

您的代码片段是否包含一些独立语句,然后是一个函数。这一切是如何运行的?您的代码只有一行
println()
,但您的输出似乎有两行独立的行…为什么要使用bleedin
十进制格式来舍入
双精度
?我建议调查一下。代码上的缩进太可怕了。混乱和矛盾。p、 如果(D>=100){howBIG=10;}否则如果(D>=1000){howBIG=100;},else子句将永远不会执行:)您的代码段包括一些独立语句,然后是一个函数。这一切是如何运行的?您的代码只有一行
println()
,但您的输出似乎有两行独立的行…为什么要使用bleedin
十进制格式来舍入
双精度
?我建议调查一下。代码上的缩进太可怕了。混乱和矛盾。p、 如果(D>=100){howBIG=10;}else如果(D>=1000){howBIG=100;},则永远不会执行else子句:)