JavaScript Python 中的零按位左移和右移等效?

JavaScript Zero Bitwise Left-Shift and Right-Shift Equivalent in Python?

在JavaScript中,我们可以使用按位左移和右移运算符来截断浮点数并将其向下舍入为最接近的整数。

示例:

console.log(2.667 << 0); //outputs 2
console.log(2.667 >> 0); //outputs 2

这些按位运算符也做同样的事情:

console.log(2.667 | 0); //outputs 2
console.log(0 | 2.667); //outputs 2
console.log(~~2.667); //outputs 2

然而在Python中,同样的操作return错误。

Python 中是否有任何等价物——使用按位运算符?或者我必须使用 int() 和 floor 除法来实现我正在寻找的东西吗?

按位运算符不适用于 python 浮点数。事实上,JS 是唯一一种我可能希望它起作用的语言......坦率地说,它们处理 JS 数字的事实可能是 JS 实际上没有 integer 类型...

如果您在 float 上调用 int,然后在 python 中使用按位运算符,一切都应该是一样的。例如

>>> int(2.667) << 0
2

当然,如果您只想截断一个浮点数,您只需调用 int 就可以了,一切都应该是正确的。

只需将 float 转换为 int int(2.667) 它总是 floor/truncate 浮点数,一旦浮点数为非负数,如果你有负数,你确实想要 floor 而不是截断使用 math.floor .

In [7]: int(2.667 )
Out[7]: 2

In [22]: from math import floor

In [23]: int(floor(-2.667 )) # just floor(-2.667 ) using python3
Out[23]: -3