Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我能';我无法让eval()处理我的javascript计算_Javascript_Eval_Pi - Fatal编程技术网

我能';我无法让eval()处理我的javascript计算

我能';我无法让eval()处理我的javascript计算,javascript,eval,pi,Javascript,Eval,Pi,我正在编写一个javascript代码,用于计算Pi的值。这就是问题所在。当eval()计算由代码生成的字符串时,它返回1。它应该返回1.4913888889(这是Pi^2/6的粗略值) 这是密码。它以字符串形式返回正确的计算结果,但eval()无法正确计算 function calculate() { var times = 10; var functionpart1 = "1/"; var functionpart2 = "^2+"; var x; for (var fu

我正在编写一个javascript代码,用于计算Pi的值。这就是问题所在。当
eval()
计算由代码生成的字符串时,它返回1。它应该返回1.4913888889(这是
Pi^2/6
的粗略值)

这是密码。它以字符串形式返回正确的计算结果,但
eval()
无法正确计算

function calculate() {
  var times = 10;
  var functionpart1 = "1/";
  var functionpart2 = "^2+";
  var x;
  for (var functionpistring = "", x = 1; times != 0; times--, x++) {
    functionpistring = functionpistring + functionpart1 + x.toString() + functionpart2;
  }
  document.getElementById("value").innerHTML = eval(functionpistring.slice(0, functionpistring.length - 1));
}
函数计算(){
var times=20,//最大循环数
x、 //计数器
f=0,//值表示法
s='';//字符串表示法
函数平方(x){
返回x*x;
}
函数inv(x){
返回1/x;
}
函数平方(x){
返回x+‘²’;
}
函数invS(x){
返回'1/'+x;
}
对于(x=0;x<次;x++){
f+=平方(inv(x));
s+=(s.长度?'+':'')+正方形(invS(x));
文件。写入(f+'='+s);
}
}
计算();

我怀疑你把它弄糊涂了。你为什么要这样做?我现在用的是Math.pow()实际上我已经计算得很好了
function calculate() {
    var times = 20, // max loops
        x,          // counter
        f = 0,      // value representation
        s = '';     // string representation
    function square(x) {
        return x * x;
    }
    function inv(x) {
        return 1 / x;
    }
    function squareS(x) {
        return x + '²';
    }
    function invS(x) {
        return '1 / ' + x;
    }
    for (x = 0; x < times; x++) {
        f += square(inv(x));
        s += (s.length ? ' + ' : '') + squareS(invS(x));
        document.write(f + ' = ' + s);
    }
}
calculate();