昨天在计算圆周率时发现一个问题:
无论如何增大N的值,python 显示小数点后,总是只有16位。
因为
python 默认浮点精度16位
使用Decimal 模块中的getcontext来设置精度
getcontext().prec = 50
当然值得注意的是,把结果要使用 Decimal() 函数,要不然,输出精度依然不变
print('共耗时 {} 秒计算出,pi的值为:'.format(finish_time - start_time), Decimal(pi))
这里计算出来,到了小数点的后48位了。
网上看的可以设置更高精度,当我再增大精度时,不知道为何pycharm只显示到50位。
后来发现,decimal 默认精度好像是50
在计算时,应该把,所有的数都要交给Decimal函数处理下。
pi = pi +Decimal( 1/pow(16,k))*(Decimal(4)/Decimal(8*k+1)-2/Decimal(8*k+4)-1/Decimal(8*k+5)-1/Decimal(8*k+6))
圆周率精确到小数点后99位的结果:
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117070
当前N值2000