javascript - 打印数字的幂并将它们加在一起
问题描述
function obliczTo() {
var bet = document.forms["oblicz"]["bet"].value;
var kol = document.forms["oblicz"]["kolejki"].value;
var bankRoll = bet * Math.pow(2.1, kol)
document.write('Potrzebujesz: ' + Math.ceil(bankRoll))
}
<form name="oblicz" onsubmit="return obliczTo()" method="post" required>
Bet: <input type="text" name="bet"> Ile kolejek: <input type="text" name="kolejki">
<input type="submit" value="Submit">
</form>
我想打印 html 中的每一个权力并将它们加在一起并将其打印为 bankRoll。例如
bet = 10
kol = 5
在 html 中:
21
44.1
92.61
194.481
408.4101
Bank Roll: 760.6011
我想打印每个单独的输出并将它们的累积总和显示为“银行卷”。
解决方案
通过使用几何级数求和公式,您可以简化算法,直接计算任何级数的总和,而无需逐步执行各个求幂步骤:
其中S
是总和,a
是起始金额,q
是因子和n
最高指数。我在这里稍微修改了公式:我从中减去了初始金额a
,因为您似乎不希望它包含在总和中。所以你最终得到了这个修改后的求和公式:
const geomSum=([a,q,n])=>// (a*(q**(n+1)-1)/(q-1)-a).toFixed((n||6)-1),
(a*(q**(n+1)-q)/(q-1) ).toFixed((n||6)-1),
res=document.getElementById('res'),
v=[].slice.call(document.querySelectorAll('input'));
function calc(){res.textContent=geomSum(v.map(e=>+e.value));}
document.querySelector('form').oninput=calc;
calc();
<form>
<input name="a" placeholder="start value" value="10"><br>
<input type="number" name="q" placeholder="factor" value="2.1"><br>
<input type="number" name="n" placeholder="exponent" value="5">
</form><br><br>
<div id="res"></div>
推荐阅读
- python - pypyodbc 与 Filemaker 的连接引发“列表索引超出范围”错误
- docker - 设置就绪、活跃度或启动探测
- matlab - 在 MATLAB 上使用 ginput 命令获取位置而不点击绘图
- r - 将数字一个在另一个之上
- java - Android CameraX (Java) 预览方向错误
- ruby-on-rails - 如何记录 ActionController::RoutingErrors 的请求详细信息?
- ios - SwiftUI 列表未显示所有项目
- python - 如何使用管道运算符和多个参数调用python“子进程”
- pandas - 在 pandas 的 groupby() 中使用 list 作为参数,并且没有任何关键元素与列或索引名称匹配
- testing - 元素的不同行为的 ID 相同时的断言错误