2016-03-09 3 views
0

У меня простой расчет, который вычисляет процентную ставку по сбережению, счету.Дата сравнения сравнить сейчас время до начала

Простой расчет

$p = 300; // Starting amount 
    $i = 0.06; // Interest rate 
    $c = 12; // compound frequency set to monthly 
    $n = 2/12; // Current time invested set to 6 months 
    $r = 200; // Monthly investment is 200 

    $x = $i/$c; 
    $y = pow((1 + $x), ($n * $c)); 

    if($p!=0) 
    { 
     $vf = $p * $y + ($r * ($y - 1)/$x); 
    } 
    else 
    { 
     $vf = 1 + $y + ($r * ($y - 1)/$x); 
    } 

    echo $vf; 

Проблема заключается в том, я нужна переменная, которая определяет возраст счета, поэтому я создал код даты дифф сравнения сейчас время дня был открыт счет.

Дата Код дифф

$join_date = $row->start_date; // 8th jan 2015 
    $date1 = new DateTime('now'); // 9th march 2016 
    $date2 = new DateTime($join_date); ?> 

    $n = (int)$date1->diff($date2)->format("%m"); // 2 months 

Так что, если я использую этот код для переменной $ п, то ответ должен так же, как исходный код его нет.

код без изменений дает ответ 704,00749999999 (правильный)

модифицированный код дает 5424.53898108 (неправильно)

Таким образом, вопрос дозы кто-нибудь знает, что случилось?

ответ

2

В собственный сценарий, вы установили

$n = 2/12; 

но модифицированный код устанавливает

$n = (int) $date1->diff($date2)->format("%m"); // == 2 

И очевидно, 2/12 !== 2, поэтому, возможно, это должно было быть

$n = ((int) $date1->diff($date2)->format("%m"))/12; 
+0

Да, голова время шлепка. переформатировал мой код и пропустил очевидную ошибку ... спасибо @Matteo Tassiniri – Beep

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