在简单的数学计算中获得始终为0的值

时间:2013-05-26 11:46:35

标签: java math

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

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导致输出错误?

2 个答案:

答案 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);

countint推广到double