我正在尝试将字符串转换为 32 位 int,并且我想将小于 -2^31 的数字限制为 -2^31,将大于 2^31-1 的数字限制为 2^31-1。
这是我到目前为止的代码,但由于某种原因它不起作用。
import sys
if num > sys.maxsize:
return 2147483647
elif num < -sys.maxsize - 1:
return -2147483648
如有任何帮助,我们将不胜感激,谢谢!
如果您的约束是专门针对 32 位的,那么您不应该引用 sys.maxsize,因为这不会在 64 位环境中为您提供正确的值。
使用众所周知的常数更容易。
因此:
HI = 2147483647
LO = -2147483648
def convert(s):
if (i := int(s)) > HI:
return HI
return LO if i < LO else i