Python 中一个非常大的整数的 math.pow 是错误的
math.pow of a very large integer in Python is wrong
我正在尝试通过计算整数的非常大的幂来打印非常大的数字。尽管我的代码是正确的,但我没有观察到所需的输出。
通常,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)))
我观察到的输出是
4710194409608608302099333120
预期的输出是
4710194409608608369201743232
能否请您指点一下如何解决这个问题?
输入值为:
a = 9
b = 29
c = 7
d = 27
您 运行 达到了浮点精度的极限。来自文档:
Unlike the built-in ** operator, math.pow() converts both its
arguments to type float. Use ** or the built-in pow() function for
computing exact integer powers.
所以只需使用 **
>> 9**29+7**27
4710194409608608369201743232
math.pow
将输入转换为 float
您显示的预期结果是您这样做时得到的结果:
x = 9**29
y = 7**27
print(x+y)
您看到的结果来自于:
x = float(9**29)
y = float(7**27)
print(int(x+y))
这样试试
>>> 9 ** 29 + 7 ** 27
4710194409608608369201743232
我正在尝试通过计算整数的非常大的幂来打印非常大的数字。尽管我的代码是正确的,但我没有观察到所需的输出。
通常,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)))
我观察到的输出是
4710194409608608302099333120
预期的输出是
4710194409608608369201743232
能否请您指点一下如何解决这个问题? 输入值为:
a = 9
b = 29
c = 7
d = 27
您 运行 达到了浮点精度的极限。来自文档:
Unlike the built-in ** operator, math.pow() converts both its arguments to type float. Use ** or the built-in pow() function for computing exact integer powers.
所以只需使用 **
>> 9**29+7**27
4710194409608608369201743232
math.pow
将输入转换为 float
您显示的预期结果是您这样做时得到的结果:
x = 9**29
y = 7**27
print(x+y)
您看到的结果来自于:
x = float(9**29)
y = float(7**27)
print(int(x+y))
这样试试
>>> 9 ** 29 + 7 ** 27
4710194409608608369201743232