我正在测试使用此方法的应用
public double range(double[] myArray1, double[] myArray2, double[] myArray3) {
int count=myArray1.length;
double dfw = (3 * count) - 3;
double msw = totalval / dfw;
double critical = (2 / count) * (msw / 2);
double range = Math.sqrt(critical);
double crange = 3.95* range;
return critical;
}
我试图为3个数组的输入打印所有值,长度均为4;
dfw=9
msw=341.6388888888889
critical=0;
range=0;
crange=0;
所有值都已正确计算,但当执行次数达到critical
时,不会计算值。
这件事怎么可能?为什么critical
结果始终为0导致输出错误?
答案 0 :(得分:4)
问题是(2 / count)
是Integer
操作,如果0
将返回count > 2
。
要将其更改为浮点操作,可以使用浮点文字,如下所示:
double critical = (2.0 / count) * (msw / 2);
答案 1 :(得分:1)
您正在执行整数数学运算。 int myvalue = 1/2
会给您myvalue = 0;
你可以进行演员
double critical = (2.0 / (double)count) * (msw / 2.0);
将count
从int
推广到double