You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Math.random()与按位或(|)运算结合会返回整数?

为什么按位或(|)运算会让小数自动变成整数?

这是因为JavaScript的所有按位运算都会先将操作数转换为32位有符号整数,这个转换过程会直接截断数值的小数部分,自然就得到了整数结果,不需要额外调用Math.floor()这类方法。

具体拆解你的示例:

  1. 当你执行Math.random() * 10时,得到的是0到10之间的浮点数(比如6.452)。
  2. 执行按位或运算6.452 | 20时,JS会先对两个操作数做隐式转换:
    • 把浮点数6.452截断小数部分,转为整数6;
    • 整数20保持不变;
  3. 再对这两个整数执行按位或运算:6 | 20的二进制运算结果是26(二进制0110 | 10100 = 11010),最终返回整数。

补充验证例子:

  • 3.9 | 0 → 结果是3(直接截断小数部分)
  • -4.2 | 0 → 结果是-4(注意:负数是向0取整,和Math.floor(-4.2)得到-5的行为不同)

内容的提问来源于stack exchange,提问作者kchui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:21:57