Math.max()表示变量

时间:2014-01-29 11:13:18

标签: javascript math

我试过了:

var maxnumber = Math.max([aantalkeerspeer, aantalkeerzwaard, aantalkeerscout, aantalkeerzc, aantalkeerkata]);

var maxnumber = Math.max(aantalkeerspeer, aantalkeerzwaard, aantalkeerscout, aantalkeerzc, aantalkeerkata);

两个都没有工作,我只是得到了NaN。我怎么能这样做?

4 个答案:

答案 0 :(得分:2)

如果一个或多个参数不是数字,则

Math.Max返回NaN。请确保所有都是数字

答案 1 :(得分:1)

Math.max的语法是

  

Math.max([value1 [,value2,...]])

     

如果没有给出参数,结果是 - 无穷大。

     

如果至少有一个参数无法转换为数字,则结果为NaN。 <子> (MDN)

根据所描述的语义,您的第一个approch不正确,因为您将一个数组作为参数传递,如果可转换为数字,则只返回其值,因为缺少任何其他可能更大的值

然而,您可以使用Function.prototype.apply将一组数字作为参数传递给Math.max

e.g。

var m = 42;  
Math.max.apply (null,[1,2,m,3,4,5]) //42 =>
Math.max (1,2,m,3,4,5) //42

由于您的两个版本都失败了, 它表明您传递的其中一个变量无法转换为数字,因此结果为NaN

请注意,传递的变量不一定必须是类型编号,只要它可以转换为1即可。 例如以下示例返回3

Math.max ({valueOf: function () { return 1; }},{valueOf: function () {return 3;}}); // 3

答案 2 :(得分:0)

Math.max() 

函数将仅检查数字组的最大值,而不是字符串。那只有你回答NaN。

答案 3 :(得分:0)

我知道这是一个很晚的答案,但这是给那些正在寻找这个问题的人的。以我的拙见,其余的答案对于像我这样的初学者来说要么是不完整的,要么是有点令人困惑。问题在于变量是字符串,在Math.max()中不起作用。就我个人而言,parseInt()对我有用,它基本上是将字符串转换为整数。您也可以使用parseFloat()将其转换为带小数的数字。另外,Number()可以将两者都转换,尽管如果文本输入字符串,它将返回NaN。

在此提供示例:

<p id="display"></p>

<input id="firstone" type="number"></input>
<input id="secondone" type="number"></input>
<input id="thirdone" type="number"></input>

<br>

<button onclick="biggestnum();">Which is the biggest?</button>

<script>
    function biggestnum(){
    var input1 = document.getElementById("firstone").value;   
    var input2 = document.getElementById("secondone").value;  
    var input3 = document.getElementById("thirdone").value;
    var x = parseInt(input1, 10)
    var y = parseInt(input2, 10)
    var z = parseInt(input3, 10)
    var maximum = Math.max(x, y, z);
    document.getElementById("display").innerHTML = maximum;
}
</script>

这基本上允许输入到输入中的数字在Math.max()中运行。关于parseInt()parseFloat()的另一点重要注意事项是,您必须指定数字基数(通常为10)。