Java阵列的12个月移动平均值

Java阵列的12个月移动平均值,java,Java,我试着用这个代码来计算12个月移动平均线。第三列下面的数据是我想计算平均值的值。 此代码的问题在于,它将移动平均值作为转换为double的值输出 //a is an object of the larger class //x is the collection of values to be averaged public int bars = 1; double[] movavg = new double[x.length - bars]; // int k = 0; try {

我试着用这个代码来计算12个月移动平均线。第三列下面的数据是我想计算平均值的值。
此代码的问题在于,它将移动平均值作为转换为double的值输出

//a is an object of the larger class
//x is the collection of values to be averaged
public int bars = 1;
double[] movavg = new double[x.length - bars]; // 
int k = 0;
try {
    for (int i = a.bars - 1; i < a.x.length - 1; i++) // for each bar
    {
        a.movavg[a.k] = 0.0;
        for (int j = 0; j < a.bars; j++) // sum over  'bars' previous input values
        {
            a.movavg[a.k] += a.x[i - j];
        }
        double k = a.movavg[a.k++] /= a.bars; // divide by number of bars

        System.out.println(i + "   " + k + "    " + a.avgNumerator[i]);
    }
} catch (ArrayIndexOutOfBoundsException e) {
    e.printStackTrace();
}
}
结果应该是这样

moving_average
15,868,750
16,446,875
17,228,571
17,098,113
17,056,140
17,512,727
15,891,379
16,056,923
16,188,571
16,515,385
16,270,833
16,671,053
17,241,279
18,296,196
18,547,222
19,431,548
20,334,302
21,014,706
21,089,080
21,520,349
21,408,333
20,737,500
20,745,876
20,493,229
19,597,849
18,323,656
17,704,167
但我得到的结果是

2.1333333E7
1.35E7
1.7285714E7
1.55E7
1.58E7
1.59E7
1.5875E7
1.56E7
1.7666666E7
2.0E7
1.5958333E7
2.1583333E7
2.151923E7
2.545E7
2.14E7
3.4166666E7
2.7928571E7
2.925E7
1.755E7
1.9111111E7
1.82E7
1.5181818E7
1.4455555E7
1.69E7
1.35E7
1.36E7
它类似于代码输出相同的值,但转换为双精度

//a is an object of the larger class
//x is the collection of values to be averaged
public int bars = 1;
double[] movavg = new double[x.length - bars]; // 
int k = 0;
try {
    for (int i = a.bars - 1; i < a.x.length - 1; i++) // for each bar
    {
        a.movavg[a.k] = 0.0;
        for (int j = 0; j < a.bars; j++) // sum over  'bars' previous input values
        {
            a.movavg[a.k] += a.x[i - j];
        }
        double k = a.movavg[a.k++] /= a.bars; // divide by number of bars

        System.out.println(i + "   " + k + "    " + a.avgNumerator[i]);
    }
} catch (ArrayIndexOutOfBoundsException e) {
    e.printStackTrace();
}
}
此代码的问题在于,它将移动平均值作为转换为double的值输出

//a is an object of the larger class
//x is the collection of values to be averaged
public int bars = 1;
double[] movavg = new double[x.length - bars]; // 
int k = 0;
try {
    for (int i = a.bars - 1; i < a.x.length - 1; i++) // for each bar
    {
        a.movavg[a.k] = 0.0;
        for (int j = 0; j < a.bars; j++) // sum over  'bars' previous input values
        {
            a.movavg[a.k] += a.x[i - j];
        }
        double k = a.movavg[a.k++] /= a.bars; // divide by number of bars

        System.out.println(i + "   " + k + "    " + a.avgNumerator[i]);
    }
} catch (ArrayIndexOutOfBoundsException e) {
    e.printStackTrace();
}
}
这是意料之中的,因为你将平均数计算为双倍。如果您只是想将双平均值转换为整数,那么使用;e、 g


为什么这个标签是mysql?我不知道你的问题到底在问什么。你希望它是一个整数吗?你能澄清一下你的问题到底是什么吗?