【发布时间】:2015-07-24 15:47:06
【问题描述】:
我用一个简单的 JS 代码计算以下系列的总和:
b 是一个常数,可以是任何值。
JS 代码尝试查找哪个 minimum 值r(在本例中为 1000 次尝试),这个不等式是有效的:
如果r 低于1.50000,结果就会变得愚蠢。
var pre = 0.0;
var r = 1.50010;
var b = 0.01;
for (var p = 0; p < 1000; p++) {
var sum = 0;
for (var i = 0; i <= 33; i++) {
sum += Math.pow(r, i);
}
sum *= b;
if ((2 * b * Math.pow(r, 34)) > sum) {
pre = r;
r -= 0.00001;
r = parseFloat(r.toFixed(5));
} else {
console.log(pre);
console.log(((2 * b * Math.pow(r + 0.00001, 34)) - sum).toFixed(8));
break;
}
}
代码在pre == 1.5 处中断,如果我要强制r = 1.49999,console.log(pre) 将返回0。为什么?
【问题讨论】:
-
左侧的
k + 1是错误的。据我所知,没有k。在右边,k只是一个迭代的绑定变量。k + 1应该只是34,对吧? -
我的错,是的,
33的值应该会改变。为什么没有k?
标签: javascript math series