Javascript 使用Math.round生成奇怪的方法结果

Javascript 使用Math.round生成奇怪的方法结果,javascript,methods,return,Javascript,Methods,Return,当使用调用此方法时 knownScore=70, 新闻核心=70, 深度=1, 它返回3535!!!!! 这怎么可能 this.weightedAvg = function(depth, knownScore, newScore) { if ((knownScore > 100) || (knownScore < -100)) return newScore; else return Math.round((depth*knownScore + newScore)/(de

当使用调用此方法时 knownScore=70, 新闻核心=70, 深度=1, 它返回3535!!!!! 这怎么可能

this.weightedAvg = function(depth, knownScore, newScore) {
   if ((knownScore > 100) || (knownScore < -100)) return newScore;
   else return Math.round((depth*knownScore + newScore)/(depth + 1));
};
this.weightedAvg=函数(深度、知识存储、新闻核心){
如果((knownScore>100)|(knownScore<-100))返回newScore;
否则返回Math.round((深度*knownScore+newScore)/(深度+1));
};
当使用值35、70、2调用时,它返回2357!
有什么帮助吗?

传递给函数的newScore值是一个字符串。你应该确保它们都是数字。此代码将起作用(请注意将newScore转换为数字的+符号):

结果被2除后将转换为数字:

'7070'/2 // converts to number, resulting in 3535

传递给函数的newScore的值是一个字符串。你应该确保它们都是数字。此代码将起作用(请注意将newScore转换为数字的+符号):

结果被2除后将转换为数字:

'7070'/2 // converts to number, resulting in 3535

您需要将var解析为如下数字:

var number1 = Number(n);

您正在传递字符串,所以他执行“2”+“35”+“70”而不是2+35+70

您需要将var解析为如下数字:

var number1 = Number(n);

您正在传递字符串,所以他执行“2”+“35”+“70”而不是2+35+70

为我返回70:为我返回70:Wonder不能
depth
也是一个数字。@raina77ow结果与newScore(可能还有knownScore)是字符串而不是数字一致。如果depth也是一个字符串,那么除法将产生一个与3535不同的数字。Wonder不能
depth
也是一个数字。@raina77ow结果是一致的,只有newScore(可能还有knownScore)是字符串而不是数字。如果深度也是一个字符串,那么除法的结果将不同于3535。谢谢!在别处执行此操作以确保传递的参数为number。谢谢!在别处执行此操作以确保传递的参数为number。