我在python中遇到系列计算的问题,它们在第15位后都失败了。我正在使用Canopy。
例如
3.1415926535897932384626433832795028841971693993751实际pi 3.14159265358979444826559301873203366994857788085938我的结果 3.1415926535897932384626433832795028841971XXXXXXXXXX问题
等式16arctan(1/5) - 4arctan(1/239):
# For Machin
mm = 0.
totalm1 = 0.
while mm <= 100:
machin1 = (16.)*(-1)**(mm)*((1./5)**(1+2.*mm))/(2.*mm+1) -(4.)*(-1)**(mm)*((1./239)**(1+2.*mm))/(2.*mm+1)
totalm1 += machin1
mm += 1
print "%50.50f" %totalm1
如何解决这个问题?
答案 0 :(得分:1)
浮点数只有大约15位精度。如果需要更多有效数字,请使用任意精度数学库。内置的decimal
模块可能是合适的,或者您可以尝试mpmath
,它似乎有更多功能。
使用decimal
模块计算2的平方根的示例:
>>> import decimal
>>> decimal.getcontext().prec = 50 # Compute with 50 digits of precision
>>> decimal.Decimal('2') ** decimal.Decimal('0.5')
Decimal('1.4142135623730950488016887242096980785696718753769')