gpt4 book ai didi

javascript - 为什么 JavaScript 中 << 0 会删除数字的小数部分?

转载 作者:行者123 更新时间:2023-12-02 22:03:15 25 4
gpt4 key购买 nike

当您有一个 float (例如 10.1)时,您在 JavaScript 中使用零填充左移运算符 (<<),它仅返回该数字的整数部分,例如 10。

这里有一些源代码显示了我的意思:

var num1 = 958.51243

console.log(num1) // 958.51243
console.log(num1 << 0) // 958

为什么会发生这种情况?

最佳答案

请参阅docs :

The operands of all bitwise operators are converted to signed 32-bit integers in two's complement format, except for zero-fill right shift which results in an unsigned 32-bit integer.

因此在执行操作之前,数字将被转换为整数。

对于左移,官方规范here中有描述:

6.1.6.1.9 Number::leftShift ( x, y )

  1. Let lnum be ! ToInt32(x).

  2. Let rnum be ! ToUint32(y).

  3. (...perform operation...)

哪里ToInt32是:

The abstract operation ToInt32 converts argument to one of 2^32 integer values in the range -2^31 through 2^31 - 1, inclusive.

关于javascript - 为什么 JavaScript 中 << 0 会删除数字的小数部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59805290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com