【问题标题】:Alternative of ul in pythonpython中ul的替代品
【发布时间】:2020-12-31 08:19:04
【问题描述】:

在 C++ 中,我可以使用ul1ul,它们代表unsigned long int,其值为1,在位级别表示为:00000000000000000000000000000001。同样我们可以使用2ul等等。

我的问题是在 python 中ul 的替代品是什么。

【问题讨论】:

  • Python 有无限大(理论上)有符号整数。你想用这个整数做什么?
  • 您的意思是问:My question is what is the equivalent of ul in python
  • @MichaelButscher 我有一个来自 github 的 c++ 程序,我需要在 python 中进行转换,为此我需要这个。这是c++代码 long double a = sqrt(1ul+4*(x))

标签: python math integer long-integer


【解决方案1】:

用python写就行了。像 C++ 中的 1ul 这样的数字只是 C++ 的产物。

import math
x = 14
a = math.sqrt(1 + (4 * x))

print(a)

输出:

7.54983443527075

【讨论】:

    【解决方案2】:

    除非您依赖于unsigned long限制(例如,在递增时从 ULONG_MAX 翻转到 0,在递减时反之亦然;无法存储负值),您不用担心。 Python 的 int 类型是“无限精度”(它有限制,因为现实世界的计算机无法做到无限,但限制足够高,除非您尝试在不使用三-arg pow,即使那样,它通常只是很慢,它仍然有效)。所以对于你的用例:

    a = math.sqrt(1 + (4 * x))  # Or (1 + (4 * x)) ** 0.5
    

    工作得很好。

    如果你需要依赖unsigned long限制,那就更丑了;您可以在每个可能溢出的操作之后使用0xFFFF_FFFF_FFFF_FFFF 显式屏蔽,或者对所有数学使用ctypes.c_ulong 类型(将常量强制转换回c_ulong),但这通常不需要,也不需要您使用案例。

    【讨论】:

      猜你喜欢
      • 2018-08-27
      • 2021-02-11
      • 2014-05-17
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2013-12-26
      相关资源
      最近更新 更多