ФорумПрограммированиеПыхнуть хотите?Готовые решения → credit_calculator simple php function

credit_calculator simple php function

  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 24 марта 2011 г. 17:49

    <?php
    /**
    * =================================================================
    * Credit Calculator Function
    * =================================================================
    * Function can calculate your credit payments & percents.
    * Needed a BCMath Arbitrary Precision Mathematics PHP Extension.
    * Correctness: 94.667%
    * =================================================================
    * @author Mars
    * =================================================================
    * @param integer $money - credit sum
    * @param integer $percent - interest on the credit
    * @param integer $months - total months
    * @return array
    */
    function credit_calculator ($money, $percent, $months) {

    bcscale(30);
    $debt = $money;
    $_percent = 0.00;
    $_donation = 0.00;
    $result = array();
    $per_month = bcdiv($money,$months);

    for ($i = 1; $i < $months + 1; ++$i) {
    $result[$i] = array();
    $x = &$result[$i];
    $x['realpay'] = round($per_month,2);
    $_percent += $x['percent'] = bcadd(bcdiv(bcmul($debt,($percent/100)),12),(M_SQRT1_2/1000000),2);
    $_donation += $x['donation'] = bcadd($per_month,$x['percent'],2);
    $x['owed'] = bcsub($debt,$per_month,2);
    $debt = bcsub($debt,$per_month);
    }

    $result['total'] = array(
    'realpay' => $money,
    'percent' => $_percent,
    'donation' => ($_donation < $money) ? $money : $_donation,
    'owed' => 0,
    );

    return $result;
    }

    // example:
    print_r(credit_calculator(120000, 16, 12));
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 марта 2011 г. 17:55, спустя 5 минут 31 секунду

    практически уверен, не раз делал калькуляторы для бизнесов попроще, так там столько "если", что твоя функция - дай бог 1% от парамтеров, которые рассчитываются в реальном калькуляторе
    Сапожник без сапог
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 24 марта 2011 г. 17:59, спустя 4 минуты 19 секунд


    практически уверен, не раз делал калькуляторы для бизнесов попроще, так там столько "если", что твоя функция - дай бог 1% от парамтеров, которые рассчитываются в реальном калькуляторе


    причем тут бизнес? эта функция просто показывает переплату по банковскому кредиту + сколько нужно вносить оплату ежемесячно
    Спустя 70 сек.
    я хочу сделать j2me прогу на телефон, чтобы в ней такая же функция была)
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 24 марта 2011 г. 18:09, спустя 9 минут 28 секунд

    на самом жеде можно отталкиватся от этого, а в целом реально функционал нужно расширять. и при этом очень существенно. Дуд прав, условий там вагон, и изменение каждого из них влияет на общую картину.
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 24 марта 2011 г. 18:22, спустя 12 минут 57 секунд

    какие тут могут быть ещё условия?
    Спустя 167 сек.
    кстати вот что вернет приведённый выше example

    Array
    (
    [1] => Array
    (
    [realpay] => 10000
    [percent] => 1600.00
    [donation] => 11600.00
    [owed] => 110000.00
    )

    [2] => Array
    (
    [realpay] => 10000
    [percent] => 1466.66
    [donation] => 11466.66
    [owed] => 100000.00
    )

    [3] => Array
    (
    [realpay] => 10000
    [percent] => 1333.33
    [donation] => 11333.33
    [owed] => 90000.00
    )

    [4] => Array
    (
    [realpay] => 10000
    [percent] => 1200.00
    [donation] => 11200.00
    [owed] => 80000.00
    )

    [5] => Array
    (
    [realpay] => 10000
    [percent] => 1066.66
    [donation] => 11066.66
    [owed] => 70000.00
    )

    [6] => Array
    (
    [realpay] => 10000
    [percent] => 933.33
    [donation] => 10933.33
    [owed] => 60000.00
    )

    [7] => Array
    (
    [realpay] => 10000
    [percent] => 800.00
    [donation] => 10800.00
    [owed] => 50000.00
    )

    [8] => Array
    (
    [realpay] => 10000
    [percent] => 666.66
    [donation] => 10666.66
    [owed] => 40000.00
    )

    [9] => Array
    (
    [realpay] => 10000
    [percent] => 533.33
    [donation] => 10533.33
    [owed] => 30000.00
    )

    [10] => Array
    (
    [realpay] => 10000
    [percent] => 400.00
    [donation] => 10400.00
    [owed] => 20000.00
    )

    [11] => Array
    (
    [realpay] => 10000
    [percent] => 266.66
    [donation] => 10266.66
    [owed] => 10000.00
    )

    [12] => Array
    (
    [realpay] => 10000
    [percent] => 133.33
    [donation] => 10133.33
    [owed] => 0.00
    )

    [total] => Array
    (
    [realpay] => 120000
    [percent] => 10399.96
    [donation] => 130399.96
    [owed] => 0
    )

    )
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 24 марта 2011 г. 18:29, спустя 7 минут 1 секунду

    какие тут могут быть ещё условия?

    аннуитетный или дифференцированный график? а какой был превый взнос? а комиссия банка? а на остаток или фиксированная?
    Спустя 44 сек.
    это так… то что с ходу вспоминается.
    дуд таки прав =))
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 24 марта 2011 г. 18:38, спустя 9 минут 2 секунды


    какие тут могут быть ещё условия?

    аннуитетный или дифференцированный график? а какой был превый взнос? а комиссия банка? а на остаток или фиксированная?
    Спустя 44 сек.
    это так… то что с ходу вспоминается.
    дуд таки прав =))


    если аннуитетный, то рассчитать каждый месяц взнос не сложно основываясь на результате $result['total']['donation'], надо просто разделить его на количество месяцев кредита

    первого взноса небыло, это банковский кредит, тут обычно первым делом деньги берут а не отдают))
    Спустя 59 сек.
    тоже самое про комиссию банка
    Спустя 128 сек.
    <?php
    /**
    * =================================================================
    * Credit Calculator Function
    * =================================================================
    * Function can calculate your credit payments & percents.
    * Needed a BCMath Arbitrary Precision Mathematics PHP Extension.
    * Correctness: 94.667%
    * =================================================================
    * @author Mars
    * =================================================================
    * @param integer $money - credit sum
    * @param integer $percent - interest on the credit
    * @param integer $months - total months
    * @return array
    */
    function credit_calculator ($money, $percent, $months) {

    bcscale(30);
    $debt = $money;
    $_percent = 0.00;
    $_donation = 0.00;
    $result = array();
    $per_month = bcdiv($money,$months);

    for ($i = 1; $i < $months + 1; ++$i) {
    $result[$i] = array();
    $x = &$result[$i];
    $x['realpay'] = round($per_month,2);
    $_percent += $x['percent'] = bcadd(bcdiv(bcmul($debt,($percent/100)),12),(M_SQRT1_2/1000000),2);
    $_donation += $x['donation'] = bcadd($per_month,$x['percent'],2);
    $x['owed'] = bcsub($debt,$per_month,2);
    $debt = bcsub($debt,$per_month);
    }

    $z = ($_donation < $money) ? $money : $_donation;

    $result['total'] = array(
    'realpay' => $money,
    'percent' => $_percent,
    'donation' => $z,
    'annuitet' => bcdiv($z, $months, 2),
    'owed' => 0,
    );

    return $result;
    }
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 24 марта 2011 г. 18:41, спустя 3 минуты 38 секунд

    первого взноса небыло, это банковский кредит, тут обычно первым делом деньги берут а не отдают))

    ты ошибаешься ;)
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 24 марта 2011 г. 19:03, спустя 21 минуту 28 секунд

    вот я писал давно
    http://k-f-b.ru/tools/calculator
    http://k-f-b.ru/tools/credit
    Только у меня там все JS
  • Yasumi

    Сообщения: 28 Репутация: N Группа: Кто попало

    Spritz 18 августа 2012 г. 22:07, спустя 513 дней 2 часа 4 минуты

    Из жевательной резинки
    Килограммов из пяти
    Можно вылепить ботинки
    Для последнего пути…

Пожалуйста, авторизуйтесь, чтобы написать комментарий!