isNaN方法对于none都不返回true

时间:2017-03-24 14:08:48

标签: javascript typescript

我使用随机数生成器返回随机数x。因为我需要x用于其他计算,x必须是一个数字。检查我是否使用了isNaN方法。因此,我的循环应该运行,因为x不是数字。 然而,isNaN方法似乎不合适,因为循环有时(随机)返回“NaN”。 你们中的任何人都有明智的想法吗?

do {
  do {
    a = 2.0 * Math.random() - 1;
    b = 2.0 * Math.random() - 1;
    q = a * a + b * b;

  } while (q === 0 && q >= 1)

  p = Math.sqrt((-2 * Math.log(q)) / q);
  x =  a * p;


} while (x <= -5.4 && isNaN(x))

return x;

2 个答案:

答案 0 :(得分:0)

代码正在完成您正在指示的内容。你外在的表达

while (x <= -5.4 && isNaN(x))

应该使用逻辑OR而不是AND。

如果isNaN(x)== true,则x&lt; = -5.4 == false;虚假&amp;&amp; true == false。

你需要了解logical operators and what they do

答案 1 :(得分:-2)

通常,isNaN()函数应该返回True或False。但你可以写下这个来测试它:

var testResult = isNaN(num)
console.log(testResult);

否则,您可以通过创建以下内容来创建自己的抽象函数:

function isNumber(num)
{
  return ( !isNaN(num)) : true : false );
}

而且,您可以查看以下内容:

var checkNumber = isNumber(var);