2015-12-09 2 views
2

Я пишу код Java для расчета суммы количества, которое мы должны купить, чтобы средневзвешенное значение было равно целевой цене.Средневзвешенная по объему цена за отсутствующий quatinty

Пример: Допустим, произведения р

Q 1 = 310; // Этого количества, которое у меня уже есть.

P1 = 16.40; // Я купил Q1 количество @ P1.

P2 = 15.00; // Текущая рыночная цена за количество.

P3 = 15.10; // Целевая средняя цена. Я должен привести мою среднюю цену к его цене .

Q2 =? // Сколько продуктов p будет куплено по цене P2. Так что моя средняя цена равна P3.

Я не могу найти прямую формулу для этого.

До сих пор я попытался это:

void int getQuantity(Q1,P1,P2,P3) 
{ 
    int i = 0; 
    while(true) 
    { 
     double calcPrice = ((Q1*P1)+(i*P2))/(Q1+i); 

     // If Calculated price equals to Target Price, break out of loop 
     if(calcPrice == P3) { 
      break; 
     } 
     // if values not same Increment i by 1. 
     ++i; 
    } 
    return i; 
} 

Помощь будут оценены.

Thanks

ответ

2

Математика bhind это довольно просто. Формула:

Q1 * P1 + Q2 * P2 
---------------- = P3 
    Q1 + Q2 

Если решить эту проблему Q2 вы будете иметь:

 Q1 * (P1 - P3) 
Q2 = --------------- 
     (P3 - P2) 

В коде это будет:

double Q2 = Q1 * (P1-P3)/(P3-P2); 

полный метод должен обложки, такие как P2 == P3 или P2 > P3. Вы можете обращаться с такими случаями, как это (например):

public double getQuantity(int Q1, double P1, double P2, double P3) throws IllegalArgumentException { 
    if ((P1 > P3 && P3 > P2) || (P1 < P3 && P3 < P2)) 
     return Q1*(P1-P3)/(P3-P2); 
    else if (P1 == P3) 
     return 0; 
    else 
     throw new IllegalArgumentException("P3 has to be between P1 and P2!"); 
} 
+0

Спасибо за быстрый ответ. Но эта формула не будет работать, если текущая цена и целевая цена равны. Это P2 == P3. –

+2

Причина в том, что тогда невозможно достичь средней цены. Вам нужно будет купить инфинитное количество, чтобы добраться до него;) Но я отредактирую свое сообщение соответственно, чтобы помочь вам в этом вопросе. – ParkerHalo

+0

@Teepeemm, вы правы! Я адаптирую свой пример в соответствии с вашим сообщением! – ParkerHalo

Смежные вопросы