【PHP】元利均等返済ローンの計算式
元利均等返済方式の計算を行うPHPプログラム
住宅ローン等の金利方式で用いられる元利均等返済の計算をPHPで行う。
毎回の支払額を算出する
元利均等返済方式で返済回数と金利を条件に毎回(毎月)の支払額を求める式
毎回の支払額 = 月利 × ((1 + 月利) ^ 返済回数) × 元金 ÷ ((1 + 月利) ^ 返済回数) – 1
※ 月利(金利% ÷ 100 ÷ 12)
<?php
/**
* @param int $loan_price 元金
* @param int $count 返済回数
* @param float $rate 金利(%)
* @return int
*/
function calcEverypay(int $loan_price, int $count, float $rate)
{
$month_rate = $rate / 100 / 12;
$every_pay = $month_rate * ( ( 1 + $month_rate ) ** $count ) * $loan_price / ( ( (1 + $month_rate) ** $count ) - 1 );
return floor($every_pay);
}
返済回数を求める
毎回の支払額、金利を条件に返済回数を求める式を作成する
毎回の支払額を求める式(再掲)
毎回の支払額 = 月利 × ((1 + 月利) ^ 返済回数) × 元金 ÷ ((1 + 月利) ^ 返済回数) – 1
この式を使って返済回数(x)を求める式に変換する
毎回の支払額 = 月利 × ((1 + 月利) ^ 返済回数x) × 元金 ÷ ((1 + 月利) ^ 返済回数x) – 1
↓
月利 ×(1 + 月利)^返済回数x × 元金 = 毎回の支払額 × ((1 + 月利)^返済回数x) - 1
↓
月利 ×(1 + 月利)^返済回数x × 元金 – 毎回の支払額 ×(1 + 月利)^返済回数x = - 1 (毎回の支払額)
↓
月利 × 元金 – 毎回の支払額 ×(1 + 月利)^返済回数x = - 1 (毎回の支払額)
↓
(1 + 月利)^返済回数x = 毎回の支払額 ÷ 毎回の支払額 – 月利 × 元金
↓
返済回数x × log(1 + 月利) = log(毎回の支払額 ÷ 毎回の支払額 – 月利 × 元金)
↓
返済回数x = log(毎回の支払額 ÷ 毎回の支払額 – 月利 × 元金) ÷ log(1 + 月利)
<?php
/**
* @param float $rate 金利(%)
* @param int $every_pay 毎回の支払金額
* @param int $loan_price 元金
* @return int
*/
function repaymentCount(float $rate, int $every_pay, int $loan_price)
{
$month_rate = $rate / 100 / 12;
$count = log($every_pay/ ($every_pay - $loan_price * $month_rate)) / log(1 + $month_rate);
return round($count);
}