5 回答

TA贡献1866条经验 获得超5个赞
根据 Python 2 文档和 Python 3 文档,需要整数参数。
range
在IEEE-754 32位二进制浮点数中,最大可表示的有限数约为3.4028e38。将数字(如源代码中的数字)转换为此格式时,任何大于或等于 2128−2104 (340,282,377,062,143,265,289,209,819,405,393,854,464) 的数字都将转换为无穷大,前提是使用常见的舍入到最近连接到偶数方法。因此,(代表10•1099,因此代表10100)将表现得像无穷大。但是,Python实现通常使用IEEE-754 64位二进制浮点,其中最大可表示的有限数是21024−2971,并充当有限数。1 因此,要获得无穷大,您需要周围。
1e99
10e+99
10e99
1e309
人类不可能测试从1到1递增1的循环是否会产生无穷大,因为人类每年可用的总计算能力只有大约1030个添加(对于松散的“周围”感,一些数量级)。这不足以计数到32位浮点有限数的极限,更不用说64位浮点数了。
10e99
如果算术以浮点格式完成,即使具有无限的计算能力,它也永远不会达到无穷大,因为一旦IEEE-754 64位二进制文件中的总和达到253,添加1不会改变数字;253 将在每次迭代中产生。这是因为 IEEE-754 64 位二进制文件只有 53 位可用于有效位数,因此 253+1 不可表示。最接近的可表示值为 253 和 253+2。执行算术运算时,默认情况下,确切的实数结果将舍入为最接近的可表示值,并将关系舍入到其有效位数为偶数低位的数字。当 1 相加到 253 时,实数结果 253+1 将舍入为 253,因此对于所有将来的迭代,总和将保持在 253。
脚注
1 最接近的 10100 的可表示值为 10,000,000,000,000,000,159,028,911,097,599,180,468,360,808,563,945,281,389,781,327,557,747,838,772,170,381,060,813,469,985,856,815,104。

TA贡献1803条经验 获得超6个赞
问题出现是因为函数取一个,而10e+99确实是一个。虽然10e + 99当然不是无穷大,因此你不应该期望无穷大在程序执行过程中弹出任何地方,但如果你真的想让你的for循环按原样工作,你可以简单地做range()intfloat
a=0
for i in range(1, int(10e+99)):
a += 1
print (a)
然而,正如其他用户所指出的那样,我会完全重新考虑你的策略:使用基于范围的for循环来“找出”无穷大的值是行不通的。无穷大不是一个数字。

TA贡献1829条经验 获得超13个赞
使用是代码,你可以检查你的变量是否无穷大。
import math
infinity = float('inf')
a = 99999999999999999999999999999999
if a > infinity:
print('Your number is an infinity number')
else:
print('Your number is not an infinity number')
#or you can check with math.isinf
print('Your number is Infinity: ',math.isinf(infinity ))
# Also infinity can be both positive and negative
注意:无穷大是无穷大,没有尽头,无论您输入什么值或数字,它都将始终返回false。

TA贡献1848条经验 获得超6个赞
以下是如果您更正并执行程序将会发生什么:
a=0
for i in range(1, 10**100):
a += 1
print (a)
假设你有一个超级高效的python虚拟机(每个人都知道他们有多高效...)。
假设您有一个非常有效的(无界)大整数实现。
假设每个循环需要几个机器周期才能以十进制形式打印这些数字(假设只有1000,这在现实中是很不真实的)。
假设每个周期大约需要1.0e-10秒(10GHz),这意味着利用并行度实现打印。
有了这些不切实际的假设,程序完成已经需要10 ^ 93秒。
宇宙的年龄估计小于10^ 18秒。这将是漫长的。
现在让我们计算一下它将在400W计算机的基础上吸收的能量。假设所有太阳物质(2e30 kg)都可以转换为计算机的电能(通过E = m c ^ 2),您将消耗大约2 10 ^ 48相当于Sun来执行此计算。
在你回头之前,我恳请你:三思而后行!拯救宇宙!

TA贡献1780条经验 获得超1个赞
也许你的意思是你的程序永远持续下去:
a = 0
while True:
a += 1
print(a)
当我看到时,在我的脑海中,我用“永远”代替它。while True:
添加回答
举报