realestate-jp
Version:
不動産関連のユーティリティ関数を提供するライブラリ
38 lines (37 loc) • 1.38 kB
JavaScript
import { MONTHS_PER_YEAR } from "../constants.js";
import { BONUS_MONTHS } from "./constants.js";
/**
* 指定月がボーナス月か判定する
*
* @param index 返済開始からの月数(0始まり、例:0 = 1月目、12 = 翌年の1月目)
* @returns 指定月がボーナス月であれば true を返却する
*/
export function isBonusMonth(index) {
const month = index % MONTHS_PER_YEAR;
return BONUS_MONTHS.includes(month);
}
/**
* 残元金に対する月利を計算する
*
* @param loanAmount 借入総額
* @param monthlyPrincipal 月々の元金返済額
* @param monthIndex 現在の月インデックス(0始まり)
* @param annualRate 年利(%)
* @returns 月利額(円)
*/
export function calculateMonthlyInterest(loanAmount, monthlyPrincipal, monthIndex, annualRate) {
const remainingPrincipal = loanAmount - monthlyPrincipal * monthIndex;
return remainingPrincipal * (annualRate / 100 / MONTHS_PER_YEAR);
}
/**
* 元利均等の月額返済額を計算する
*
* @param principal 借入金額(円)
* @param annualRate 年利(%)
* @param months 返済期間(月単位)
* @returns 月々の返済額(円)
*/
export function calculateMonthlyPI(principal, annualRate, months) {
const r = annualRate / 100 / MONTHS_PER_YEAR;
return (principal * r) / (1 - Math.pow(1 + r, -months));
}