我有这样的程序片段:比较两个数字
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)格功能,如果大于100(1000),即送整数
您的代码片段包含一些独立语句,然后是一个函数。这一切如何运行?而你的代码只有一个'println()',但你的输出似乎有两条独立的线...... – 2011-05-22 18:54:59
为什么你使用***流派的DecimalFormat ***来四舍五入?我建议调查['java.lang.Math'](http://download.oracle.com/javase/6/docs/api/java/lang/Math.html)。 – 2011-05-22 19:08:14
此代码的缩进非常可怕。混淆和矛盾。附:如果(D> = 100){howBIG = 10;} else if(D> = 1000){howBIG = 100;},else子句将永远不会被执行:) – 2011-05-22 19:20:40