在 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() 和楼层划分来实现我正在寻找的东西?
只需将float
投射到整数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
按位运算符不适用于 python 浮点数。 事实上,JS是我可能期望它工作的唯一语言...... 坦率地说,他们处理 JS 数字的事实可能是 JS 实际上没有整数类型的人工制品......
如果您在float
上调用int
,然后在 python 中使用按位运算符,则一切都应该相同。 例如
>>> int(2.667) << 0
2
当然,如果你要做的就是截断浮点数,你可以调用int
,世界应该一切都好。