0

我正在测试使用此方法的应用程序

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;
}

我试图打印长度为 4 的 3 个数组的输入的所有值;

dfw=9
msw=341.6388888888889
critical=0;
range=0;
crange=0;

所有值都已正确计算,但当执行达到 时critical,不会计算这些值。

这东西怎么可能?为什么critical结果总是 0 导致错误的输出?

4

2 回答 2

4

问题是这(2 / count)是一个Integer操作,它将返回0if count > 2

要将其更改为浮点运算,您可以使用浮点文字,如下所示:

double critical = (2.0 / count) * (msw / 2);
于 2013-05-26T11:49:05.123 回答
1

您正在执行整数数学。int myvalue = 1/2会给你myvalue = 0;

你可以进行演员表

double critical = (2.0 / (double)count) * (msw / 2.0);

促进countint_double

于 2013-05-26T11:49:37.700 回答