在 JavaScript 中对指数求和
summing exponents in javascript
var total = 0;
for (x = 1; x < 16; x++) {
var y = x + 1;
var singleSum = Math.pow(x, y) + Math.pow(y, x);
total = total + singleSum;
document.write(total + "<br>");
}
我想取function(x,y) = x^y + y^x
x 从 1 开始,y 从 2 开始,然后找到前 15 次函数调用的总和。我不知道我做错了什么。任何帮助将不胜感激。谢谢。
浮点计算中遇到了精度损失。正确答案的表示精度高于您使用的浮点数的大小。(这有点像政府在计算税款时忽略美分的方式。
以下是 Python 中的计算,使用任意精度算法:
>>> sum(x**(x+1) + (x+1)**x for x in range(1,16))
7910956276398901049L
(末尾的L
表示"长"整数。
请注意,正确答案末尾有一个049
,而您的答案中缺少该。
你我得到的答案是7910956276398901000
没有说预期的答案是什么,但假设它与你得到的问题类似,JavaScript使用IEEE-754双精度(64位(格式表示数字。据我了解,这为您提供了 53 位精度,或 15 到 16 位十进制数字。7910956276398901000,你得到的数字比JavaScript可以处理的数字多,所以你最终得到一个"真实"答案的近似值。
你可以
这样做:
var total = new BigNumber(0);
for (x = 1; x < 16; x++) {
var singleSum = new BigNumber(x).pow(x+1).add(new BigNumber(x+1).pow(x));
total = total.add(singleSum);
document.write(total + "<br>");
}
在 http://jsfromhell.com/classes/bignumber 的帮助下
输出为:
3
20
165
1814
25215
422800
8284753
185549202
4672333603
130609758204
4012046505613
134303337007166
4865394495960599
189626416079163448
7910956276398901049
相关文章:
- 如何在php中的jquery中对循环内的选择框值求和
- 如何在jquery中使用实时计算求和值
- 尝试求和时,在我的表的页脚中返回$NaN
- 聚合物-dom重复的起始指数
- 在键值对中对求和值进行下划线
- 如何按对象数组进行分组和求和
- 如何使用jquery对货币格式的数字求和
- 求和变量,并不断显示和更新它
- setInterval() 无法正常工作 - 呈指数级增长
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- jQuery根据相关复选框选择求和单元格
- 求和d3对象数组上的元素
- 对数组进行分组和求和
- javascript 在求和时返回 NaN
- 如何对选定的复选框行值求和
- 如何使用jquery对具有相同类的文本框的值求和并将其放入另一个文本框中
- 来自模数和JavaScript中的私有指数的RSA私钥
- 使用绑定的简单JavaScript/jQuery求和函数
- 如何使用数组减少来求和对象属性长度,不带类型
- 在 JavaScript 中对指数求和