Python精确处理
我只是想知道为什么这两张照片的输出不一样。我想计算Eulers到entent Func。 对于未来,如果有人能告诉我python如何处理大数字(60+位数)以及如何使用它们,那就太酷了 多谢各位Python精确处理,python,python-3.x,math,rsa,precision,Python,Python 3.x,Math,Rsa,Precision,我只是想知道为什么这两张照片的输出不一样。我想计算Eulers到entent Func。 对于未来,如果有人能告诉我python如何处理大数字(60+位数)以及如何使用它们,那就太酷了 多谢各位 import math a = (math.pow(19,6)-math.pow(19,5)) b = (math.pow(53,4)-math.pow(53,3)) c = (36) d = (math.pow(101,3)-math.pow(101,2)) print(a) print(b) pri
import math
a = (math.pow(19,6)-math.pow(19,5))
b = (math.pow(53,4)-math.pow(53,3))
c = (36)
d = (math.pow(101,3)-math.pow(101,2))
print(a)
print(b)
print(c)
print(d)
y= int(a)*int(d)*int(c)*int(b)
print(int(y))
print(int(a*b*c*d))
输出为:
44569782.0
7741604.0
36
1020100.0
12671169797620641340800
12671169797620641038336
我假设这是由于大数上的浮点错误造成的。对整数使用内置的
pow
或**
运算符,而不是math.pow
。由于pow
和**
返回整数,因此不需要显式转换为整数。此外,变量周围不需要括号,这会降低可读性:
a = 19 ** 6 - 19 ** 5
b = 53 ** 4 - 53 ** 3
c = 36
d = 101 ** 3 - 101 ** 2
print(a)
print(b)
print(c)
print(d)
y = a * b * c * d
print(y)
print(int(a * b * c * d))
我要提到的是,在这种情况下转换为int是不必要的Python整数可以任意大。另一方面,浮点数的精度为53位二进制数字,或大约17/18位十进制数字(在标准硬件上)。在你想要的60岁的地区没有任何地方。查看模块
mpmath
。
44569782
7741604
36
1020100
12671169797620641340800
12671169797620641340800