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)
您将遇到浮点精度的限制。从文档中:
与内置**运算符不同,math.pow()会将其两个参数都转换为float类型。使用**或内置的pow()函数来计算精确的整数幂。
所以就用 **
>> 9**29+7**27
4710194409608608369201743232
Run Code Online (Sandbox Code Playgroud)
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 次 |
最近记录: |