JSFiddle - React, Tailwind, and code Playground
by Josh Pullen
HTML
<div id="output"></div>
<button id="pay">Pay $100</button>
JavaScript
function continuousInterest(startAmount, rate, time) {
return startAmount * Math.E ** (rate * time);
}
let startTime = new Date();
let startAmount = 10000;
const rate = 4.00 / 100;
function getDueNow() {
const realTime = (new Date() - startTime) / 1000 / 60 / 60 / 24 / 365.25;
const fastTime = realTime * (365.25 * 24 * 60); // 1 year => 1 minute
return continuousInterest(startAmount, rate, fastTime);
}
document.getElementById("pay").addEventListener("click", () => {
const dueBefore = getDueNow();
startTime = new Date();
startAmount = dueBefore - 100;
});
function render() {
const output = document.getElementById("output");
const due = getDueNow();
output.innerText = `Amount due: $${Math.round(due * 100) / 100}`;
requestAnimationFrame(render);
}
render();