我有这个程序片:
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函数,给出整数
您可能会看到令人困惑的结果,因为您在上一个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
.
归档时间: |
|
查看次数: |
602 次 |
最近记录: |