いくつかの数値の加重平均を取得しようとしています。基本的に私は持っています:
Price - 134.42
Quantity - 15236545
価格と数量のペアは、1 つか 2 つ、あるいは 50 から 60 もの場合があります。価格の加重平均を計算する必要があります。基本的に、加重平均は次のようなペアにほとんど重みを与えません。
Price - 100000000.00
Quantity - 3
上記のペアにさらに。
私が現在持っている式は次のとおりです。
((price)(quantity) + (price)(quantity) + ...)/totalQuantity
これまでのところ、私はこれを行っています:
double optimalPrice = 0;
int totalQuantity = 0;
double rolling = 0;
System.out.println(rolling);
Iterator it = orders.entrySet().iterator();
while(it.hasNext()) {
System.out.println("inside");
Map.Entry order = (Map.Entry)it.next();
double price = (Double)order.getKey();
int quantity = (Integer)order.getValue();
System.out.println(price + " " + quantity);
rolling += price * quantity;
totalQuantity += quantity;
System.out.println(rolling);
}
System.out.println(rolling);
return rolling/totalQuantity;
問題は、「ローリング」変数を非常に迅速に最大化することです。
実際に加重平均を取得するにはどうすればよいですか?