0

我有一个 if else 语句:

<script>
function myFunction()
{
var x="";
var myProb = Math.round(Math.random() * 1);
if (myProb<0.3)
  {
  x="Good morning";
  }
else if (myProb<0.6)
  {
  x="Good day";
  }
else
  {
  x="Good evening";
  }
document.getElementById("demo").innerHTML=x;
}
</script>

“if”和“else”位被执行,但“else if”位被完全忽略。“美好的一天”永远不会发生!

为什么是这样?我只是看不出我做错了什么。

4

6 回答 6

8

myProb只会是0or 1,所以else if永远不会是满足的条件。


0我的假设是你想要和之间的小数位1。在这种情况下删除Math.Round()

var myProb = Math.random();
于 2013-02-21T11:09:46.463 回答
3

由于 Math.round,结果Math.round(Math.random() * 1)只能是 0 或 1,因此为什么你永远不会进入中间。

于 2013-02-21T11:11:18.273 回答
2

Math.round(Math.random() * 1);只能产生 0 或 1。0 表示“早安”,1 表示“晚安”。

于 2013-02-21T11:09:46.413 回答
1

在您的代码中

if (myProb<0.3)
  {
  x="Good morning";
  }

之前是真的

else if (myProb<0.6)
  {
  x="Good day";
  }

math.round产生 0 或 1

于 2013-02-21T11:10:11.430 回答
1

尝试

Math.round(Math.random() * 100) / 100

要不就

Math.random()
于 2013-02-21T11:12:17.333 回答
-1

稍微改变你的函数以将 myProb 作为参数给出:

function myFunction(myProb)
{
var x="";
if (myProb<0.3)
  {
  x="Good morning";
  }
else if (myProb<0.6)
  {
  x="Good day";
  }
else
  {
  x="Good evening";
  }
console.log(x);
}

myFunction(0.4)

在 Chrome 中执行此操作会打印Good day到控制台。您的问题似乎是您正在四舍五入 value Math.random()。像这样分离代码可以更清楚地说明错误所在。

于 2013-02-21T11:12:47.403 回答