问题描述
在C ++中,我可以使用ul
或1ul
来表示unsigned long int
,其值1
在位级别表示为:00000000000000000000000000000001
。同样,我们可以使用2ul
,依此类推。
我的问题是python中ul
的替代方法是什么。
解决方法
只需用python编写即可。 C ++中的1ul
之类的数字只是C ++的人工产物。
import math
x = 14
a = math.sqrt(1 + (4 * x))
print(a)
输出:
7.54983443527075
,
除非您依靠unsigned long
的限制(例如,在增量上从ULONG_MAX
到0
过渡,在递减上反之亦然;无法存储负值),则无需担心。 Python的int
类型是“无限精度”(它有限制,因为现实世界中的计算机无法做到无限,但该限制足够高,除非您尝试不做RSA密码数学之类的工作,否则您将永远不会遇到它们。使用三参数pow
,即使这样,它通常也很慢,仍然可以正常工作)。因此,对于您的用例:
a = math.sqrt(1 + (4 * x)) # Or (1 + (4 * x)) ** 0.5
工作正常。
如果您需要依靠unsigned long
的局限性,那就太丑了;您可以在每次可能溢出的操作之后对0xFFFF_FFFF_FFFF_FFFF
使用显式屏蔽,或对所有数学使用ctypes.c_ulong
类型(将常量强制转换回c_ulong
),但这通常是不需要的,而不是您的用例。