JavaScriptで預金額が目標金額に達する日付を計算する方法
問題
2021年1月1日に、ある金額(amt > 0)を年利 p% で預け入れる状況を考えます。利息は年間360日換算で日割りされ、毎日残高に加算されるものとします。このとき、元利合計(total)が目標金額(a0)以上になるまで何日かかるかを求めたいと考えています。
今回作成する関数は、元本・目標金額・利率という3つのパラメータを受け取り、残高が目標金額に到達する日付を返します。
コード例
以下が実際のコードです。
const principal = 100;
const amount = 150;
const interest = 2;
const findDate = (principal, amount, interest) => {
const startingDate = new Date('2021-01-01')
const dailyInterestRate = interest / 36000
let startingMoney = principal
let daysPassed = 0
while (startingMoney < amount) {
daysPassed++
startingMoney += startingMoney * dailyInterestRate
};
startingDate.setDate(startingDate.getDate() + daysPassed)
return startingDate.toISOString().split('T')[0]
};
console.log(findDate(principal, amount, interest));出力結果
2040-12-26
コードの解説
このコードの処理の流れは以下のとおりです。
まず、開始日を 2021年1月1日 として Date オブジェクトを生成します。次に、日々の利率 dailyInterestRate を interest / 36000 として計算します。これは「パーセント表記の利率を100で割り、さらに360日で割る」ことに相当します。
while ループの中では、現在の残高が目標金額に達していない限り、経過日数を1ずつ増やしながら複利計算を繰り返します。ポイントは、単純な単利ではなく複利で計算している点です。毎日の利息は直前の残高に対して掛けられるため、残高は指数関数的に増えていきます。
目標金額に到達した時点でループを抜け、経過日数を開始日に加算します。最後に toISOString() でISO形式の文字列に変換し、split('T') によって時刻部分を除去して、YYYY-MM-DD 形式の日付文字列のみを返しています。
この例では、元本100を年利2%で預けた場合、150に達するのは約20年後の 2040年12月26日 という結果になります。低い利率でも複利の効果で長期的には大きく資産が増えることが、この計算からも読み取れます。
-
最高のJavaScriptコンプレッサーはどれ?主要な圧縮ツールを徹底解説
JavaScriptファイルのサイズは、Webサイトの表示速度やユーザー体験に大きな影響を与えます。コードを圧縮(ミニファイ)することで、不要な空白やコメントを取り除き、読み込み時間を大幅に短縮できます。ここでは、特におすすめのJavaScript圧縮ツールを紹介します。 Google Closure Compiler Google Closure Compilerは、Googleが提供する高機能なJavaScript最適化ツールです。単純な圧縮にとどまらず、JavaScriptを解析し、デッドコード(未使用のコード)を削除したうえで、残りのコードを書き換えて最小化します。その結果、実行速度の
-
JavaScriptで日付の「日」を設定する方法|setDate()の使い方を解説
JavaScriptでは、DateオブジェクトのsetDate()メソッドを使うことで、日付の「日」(1〜31)を設定・変更できます。この記事では、実際のコード例と実行結果をもとに、setDate()の基本的な使い方をわかりやすく解説します。 setDate()メソッドとは setDate()は、Dateオブジェクトの「日」の値だけを変更するためのメソッドです。年や月はそのままに、日にちだけを差し替えたい場合に便利です。引数には1〜31の整数を指定しますが、範囲外の値を渡してもエラーにはならず、自動的に月をまたいだ日付へと調整されます。また、このメソッドは元のDateオブジェクト自体を書き換え