解释Math.floor(Math.random())

时间:2011-12-20 04:59:42

标签: javascript jquery

我见过许多使用Math.floor()Math.random()

的地方

如下所示

$('a.random-color').hover(function() { //mouseover
    var col = 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';
    $(this).animate({
      'color': col,
      'paddingLeft': '20px'
    },1000);
  },function() { //mouseout
    $(this).animate({
      'color': original,
      'paddingLeft': '0'
    },500);
  });
});

为什么使用了Math.floor()Math.random()

6 个答案:

答案 0 :(得分:10)

Math.random将为您提供0(含)和1(不包括)之间的浮点数。

乘以256将得到0(包括)到256(不包括)范围内的数字,但仍然是浮点数。

在该数字的下限将为您提供0到255之间的整数(包括两者)。

您需要构建像rgb(72,25,183)这样的RGB值,这是0到255之间的整数。

答案 1 :(得分:3)

似乎需要随机颜色 - 每个组件随机在0到255之间。

Math.random()在[0,1]上返回一个随机数(即它可能正好为零或最多但不包括一个)。

将随机值乘以256会得到范围[0,256]上的随机数(即它可能是255.99,但绝不是256)。几乎在那里,但并不完全。

Math.floor()将数字向下舍入到最接近的整数,使得结果在[0,255]上成为所需的整数。

答案 2 :(得分:1)

Math.floor将给出一个整数并删除小数。

Math.random返回一个介于0和1之间的数字,因此当乘以256时会生成十进制数。这就是为什么你要使用floor来除去小数,否则rgb值将不起作用。

答案 3 :(得分:1)

Math.floor()将删除Number的小数部分。它与Math.ceil()相反。

您还可以将反转按位运算符(~~)加倍,以实现与Math.floor()相同(当然,floor()方法对大多数人来说更具可读性。)

~~(Math.random() * 256)

答案 4 :(得分:1)

Math.random返回介于0和1之间的值。您将它与256相乘,因此它将返回0到256之间的某个浮点值.math.floor将从中省略分数值。

答案 5 :(得分:0)

~~Number只是正数的Math.floor()。对于负数,它是Math.ceil()

对于正数,您可以使用:

Math.floor(x) == ~~(x)

Math.round(x) == ~~(x + 0.5)

Math.ceil(x) == ~~(x + 1)

对于负数,您可以使用:

Math.ceil(x) == ~~(x)

Math.round(x) == ~~(x - 0.5)

Math.floor(x) == ~~(x - 1)