繁体   English   中英

Python 中的 JavaScript 零位左移和右移等价物?

[英]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 中,相同的操作会返回错误。

Python 中是否有任何等价物——使用按位运算符? 或者我必须使用 int() 和 floor Division 来实现我想要的吗?

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

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

>>> int(2.667) << 0
2

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

只需将float转换为 int int(2.667) ,一旦浮点数为非负数,它就会始终int(2.667) /截断浮点数,如果您有负数,您确实想进行向下处理,而不仅仅是截断使用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM