【问题标题】:Comparing floating-point to integers in Javascript在 Javascript 中比较浮点数和整数
【发布时间】:2016-02-08 23:25:59
【问题描述】:

所以我遇到了一小段看起来像这样的代码 Math.random() * 5 | 0 并且对它的所作所为感到困惑。

经过一番检查,似乎比较将小数变成了整数。那正确吗?所以这段代码是另一种说法,就是给我一个 0 到 4 之间的随机数。谁能解释为什么会这样?

【问题讨论】:

标签: javascript random floating-point integer compare


【解决方案1】:

1) Math.random() 函数总是返回十进制值并且小于一。前 - 0.2131313

随机() 返回一个带正号的双精度值,大于或等于 0.0 且小于 1.0。

2) Math.random()*5 将始终小于 5。(最大值 - 4.99999)。

3) 位运算符'|'将截断十进制值。

编辑:保罗是正确的。 '|'不仅仅是截断。 但在这种情况下 Math.random()*5|0 - 它截断小数并返回整数。

【讨论】:

  • |Int32 一起使用,因此它将转换为 Int32,如果您的号码 n 大于 0x80000000,您将发现它不仅仅是简单地“截断”,而是溢出成负数,大于0xFFFFFFFF 将再次变为正数,等等。***固定评论
猜你喜欢
  • 2015-01-20
  • 2016-05-24
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 2021-09-30
相关资源
最近更新 更多