【发布时间】:2018-05-18 16:24:51
【问题描述】:
我做了一个 pi 计算器。但它只是更正了前 7 个小数点并开始返回相同的结果。从外观上看,我的浮点值越来越大,因为我使用了限制。但是python中的十进制数有限制吗?我阅读了一些文件,但有些数字甚至有 100 个小数点,但我只能达到 11。
我的代码:
import math
import decimal
import datetime
sqrtt=1.
sumn=0.
tryc=0
outerrepeat=1000000000
while outerrepeat>0:
tryc+=1
repeat=10000000
a=datetime.datetime.now()
print "\n>>>Processing...\n"
while repeat>0:
sumn+=1/(sqrtt**2)
sqrtt+=1
repeat-=1
b=datetime.datetime.now()
print ">>>Process complete.\n"
print ">>>Calculate time: "+str(b-a) + " Try-" + str(tryc) +" "+ str(math.sqrt(sumn*6)) + "\n"
outerrepeat-=1
print "\nThis is all I can do."
可能会有所帮助:在 IDLE 上运行。计算是通过巴塞尔问题完成的。总是卡在 3.14159264498。也永远不会超过小数点 11 位,但有时会更低。应该说我的限制(sqrtt)达到了 10 的 8 次方(可能低于但高于 10 的 7 次方。) 谢谢。
【问题讨论】:
-
这个著名的系列需要很长时间才能收敛;有 很多 更快的方法来计算 pi。但是你为什么不使用你导入的
decimal模块呢?它可以计算任意多个位置的平方根(假设您有足够的 RAM)。 -
FWIW, here 是我不久前编写的一些 Python 2 代码,它使用十进制模块将 pi 计算为高精度。它可以在一秒钟内完成 1000 位小数。
-
@PM2Ring 感谢您的回答,但这比我作为一名大三学生所能接受的要多。 :D
-
嘿,别担心,我也不知道这个算法为什么有效。 :) 但是如果你慢慢看,代码本身应该不会太难理解。
-
不是算法代码,我刚上高中。
标签: python python-2.7