在python中打印一个非常大的整数

csv*_*aju 3 python int 64-bit python-3.x

我正在尝试通过计算整数的超大幂来打印非常大的数字。尽管我的代码是正确的,但我没有观察到所需的输出。

通常,python解释器可以打印非常大的整数,与系统内存支持的一样大。考虑到这一假设,下面是我正在运行的代码。

a = int(input())
b = int(input())
c = int(input())
d = int(input())

import math
if a in range(1,1001):
    if b in range(1,1001):
        if c in range(1,1001):
            if d in range(1,1001):
                print((math.pow(a,b)+math.pow(c,d)))
Run Code Online (Sandbox Code Playgroud)

我正在观察的输出是

4710194409608608302099333120
Run Code Online (Sandbox Code Playgroud)

预期的输出是

4710194409608608369201743232
Run Code Online (Sandbox Code Playgroud)

您能为我提供解决方法的指示吗?输入值为:

a = 9
b = 29
c = 7
d = 27
Run Code Online (Sandbox Code Playgroud)

Dee*_*top 5

您将遇到浮点精度的限制。从文档中:

与内置**运算符不同,math.pow()会将其两个参数都转换为float类型。使用**或内置的pow()函数来计算精确的整数幂。

所以就用 **

>> 9**29+7**27
4710194409608608369201743232
Run Code Online (Sandbox Code Playgroud)

  • BEATEN秒! (3认同)

Jac*_*IRR 5

math.pow 将输入转换为 float

显示的预期结果是您执行以下操作时得到的结果:

x = 9**29
y = 7**27
print(x+y)
Run Code Online (Sandbox Code Playgroud)

您看到的结果是这样的:

x = float(9**29)
y = float(7**27)
print(int(x+y))
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

71 次

最近记录:

6 年 前