{
// Inputs (Observable Inputs handle their own rendering and events)
const solveInp = Inputs.radio(["S", "B", "r"], {
label: "Rokna fyri",
value: "S",
format: v => ({"S": "S - endavirði", "B": "B - byrjanarvirði", "r": "r - vakstrartal"})[v]
});
const BInp = Inputs.number({ label: "B - byrjanarvirði", value: 1000, step: 1 });
const rInp = Inputs.number({ label: "r - vakstrartal (%)", value: 8, step: 0.1 });
const SInp = Inputs.number({ label: "S - endavirði", value: 1080, step: 1 });
// Result display box
const resBox = document.createElement("div");
resBox.style.cssText = "margin-top:1rem;padding:1rem 1.2rem;border-radius:6px;"
+ "border:1px solid var(--bs-border-color,#9ec5fe);"
+ "background:var(--bs-primary-bg-subtle,#e7f1ff);";
const resFormula = document.createElement("div");
resFormula.style.cssText = "font-size:0.9rem;color:var(--bs-secondary-color,#6c757d);margin-bottom:0.4rem;";
const resAnswer = document.createElement("div");
resAnswer.style.cssText = "font-size:1.7rem;font-weight:700;color:var(--bs-primary,#0d6efd);";
resBox.appendChild(resFormula);
resBox.appendChild(resAnswer);
function fmt(n) {
if (!isFinite(n)) return "?";
const a = Math.abs(n);
const d = a === 0 ? 0 : a < 0.01 ? 6 : a < 1 ? 4 : a < 100 ? 2 : 1;
return parseFloat(n.toFixed(d)).toString().replace(".", ",");
}
function update() {
const solve = solveInp.value;
const B = BInp.value ?? 0;
const r = (rInp.value ?? 0) / 100;
const S = SInp.value ?? 0;
if (solve === "S") {
const v = B * (1 + r);
resFormula.textContent = `S = B · (1 + r) = ${fmt(B)} · (1 + ${fmt(r)})`;
resAnswer.textContent = `S = ${fmt(v)}`;
} else if (solve === "B") {
const v = (1 + r) !== 0 ? S / (1 + r) : NaN;
resFormula.textContent = `B = S / (1 + r) = ${fmt(S)} / (1 + ${fmt(r)})`;
resAnswer.textContent = `B = ${fmt(v)}`;
} else {
const v = B !== 0 ? S / B - 1 : NaN;
resFormula.textContent = `r = S/B − 1 = ${fmt(S)} / ${fmt(B)} − 1`;
resAnswer.textContent = `r = ${fmt(v * 100)} % (${fmt(v)})`;
}
}
[solveInp, BInp, rInp, SInp].forEach(inp => inp.addEventListener("input", update));
update();
// Assemble
const wrap = document.createElement("div");
wrap.style.maxWidth = "420px";
[solveInp, BInp, rInp, SInp, resBox].forEach(el => wrap.appendChild(el));
return wrap;
}Prosent - Dømi
Innleiðing
Í hesum trimum filmunum rokna vit við frymlunum \(S = B(1+r)\) og \(r = \frac{S}{B} - 1\) og \(B = \frac{S}{1+r}\). Hvør filmur loysir fyri hvørt av teimum trimum virðunum.
Byrja við at hyggja at filmunum, og royn síðan samvirkna dømi niðanfyri.
Filmur 1 - Rokna \(S\)
Filmur 2 - Rokna \(B\)
Filmur 3 - Rokna \(r\)
Samvirkið dømi: \(S\), \(B\) og \(r\)
Vel hvørji virði tú vilt rokna, set tølini inn, og síggj úrslitið.