作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用以下公式主动计算股票数据的移动平均值:
public class Average {
private static double usdJpy;
private int counter = 1;
private double movingAverageUsdJpy_ = 100.5;
public void calculateAverage(){
ReadData myData = new ReadData();
usdGbp = myData.getUsdGbp();
usdJpy = myData.getUsdJpy();
System.out.println("Before: " + movingAverageUsdJpy_);
movingAverageUsdJpy_ = (counter * movingAverageUsdJpy_ + usdJpy) / (counter + 1);
counter++;
System.out.println("Moving Average: " + movingAverageUsdJpy_);
}
}
-> Counter 是数组中元素的数量。
我的问题是,由于股票数据已经有移动平均线,我想将初始移动平均线值设置为该值(例如 97.883)。然而,每次我调用我的方法时,我的程序为 movingAverage 计算的最新值将被我之前设置的初始值覆盖,因此给出错误的结果。我不能真正使用 Final,因为每次调用该方法时都需要更新 movingAverage,所以真的很卡!
有办法解决这个问题吗?
最佳答案
你的公式不正确。如果 counter
是尚未递增的值,则使用
移动平均 = (计数器 * 移动平均 + 最新率)/(计数器 + 1)
然后将 counter
加 1。请注意,如果您希望 counter
的大小固定(在报告此类财务数据时很常见),那么您需要将这个数量的元素保留在内存中。
关于java - 如何在Java中设置初始移动平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39574830/
我是一名优秀的程序员,十分优秀!