我在python中寻找整数的最小值和最大值.例如,在Java中,我们有Integer.MIN_VALUE和Integer.MAX_VALUE.在python中有这样的东西吗?
如何在python中表示无限数?无论您在程序中输入哪个数字,任何数字都不应大于此无穷大的表示.
我一直试图找出如何表示一个最大整数,我已经阅读使用"sys.maxint".但是,在Python 3中,当我调用它时,我得到:
AttributeError: module 'object' has no attribute 'maxint'
Run Code Online (Sandbox Code Playgroud) 我知道在大多数情况下,如果不是所有的编程语言,整数,浮点数等都可以保留最大数量,无论是无符号还是有符号.例如pascal的int类型最多只能容纳32768~.
我想知道的是,python的int和浮点变量的限制是什么.我尝试了一个小程序来产生非常大的数字,但我没有遇到任何错误.它甚至对这些变量的大小有限制吗?
我看了一下文档,找不到我要找的东西:/
非常感谢帮助,谢谢!
在x64上的Python 2.7.9上,我看到以下行为:
>>> float("10"*(2**28))
inf
>>> float("10"*(2**29))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
>>> float("0"*(2**33))
0.0
>>> float("0." + "0"*(2**32))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
除非有一些更深层次的理由我错过了这违反了最少的惊喜.当我得到ValueError时,"10"*(2**29)我认为它只是对很长字符串的限制,但后来"0"*(2**33)工作了.这是怎么回事?任何人都可以证明为什么这种行为不是POLA错误(如果可能是一个相对无关的错误)?
尝试在你的Python 3.3.2 IDLE中输入这个,希望我不是唯一一个想知道并且我愿意理解为什么会这样的人.
>>> n = 331
>>> d = 165.0 # float number
>>> a = 174
>>>
>>> a**d % n
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
a**d % n
OverflowError: (34, 'Result too large')
>>> d = int(d)
>>> a**d % n
330
Run Code Online (Sandbox Code Playgroud)
浮标究竟是如何工作的,为什么会发生这种情况?谢谢.
我正在寻找一个Python对象,保证比任何给定的比较更大int.它应该是可移植的,独立于平台的,并且可以在Python 2.7+和3.x上运行.
例如:
x = float('inf')
while True:
n = next(my_gen)
if my_calc(n):
x = min(n, x)
if my_cond(x):
break
Run Code Online (Sandbox Code Playgroud)
在这里,我已经用于float('inf')此目的,因为它似乎行为正确.但这感觉很脏,因为我认为它依赖于一些潜在的浮动规范,我不知道这是依赖于平台还是以意想不到的方式打破.
我知道我可以创建自己的类并定义比较运算符,但我认为可能存在一种现有的内置方式.
这样使用安全float('inf')吗?是否有一种不那么丑陋的方式来创造这个"最大整数"?