鱼C论坛

 找回密码
 立即注册
查看: 4395|回复: 4

[已解决]python3如何打印出100位pi。

[复制链接]
发表于 2016-4-29 11:19:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python3如何打印出100位pi。

谢谢!!
最佳答案
2016-4-30 10:12:53
本帖最后由 WylLy 于 2016-4-30 10:14 编辑

百度一下,会有很多的,而且算法什么的都有,下面就是我百度的一个,可以给你贴出来
import sys
import math
from decimal import *
   
def bbp(n):
    pi=Decimal(0)
    k=0
    while k <= n:
        pi+=(Decimal(1)/(16**k))*((Decimal(4)/(8*k+1))-(Decimal(2)/(8*k+4))-(Decimal(1)/(8*k+5))-(Decimal(1)/(8*k+6)))
        k+=1
    return pi
   
def main(argv):
   
    if len(argv) !=2:
        sys.exit('Usage: BaileyBorweinPlouffe.py <prec> <n>')
           
    getcontext().prec=(int(sys.argv[1]))
    my_pi=bbp(int(sys.argv[2]))
    accuracy=100*(Decimal(math.pi)-my_pi)/my_pi
   
    print("Pi is approximately "+str(my_pi), len(str(my_pi)))
    print("Accuracy with math.pi: "+str(accuracy))
       
if __name__=="__main__":
    main(sys.argv[1:])
将该段代码保存到pi.py
在命令行中切到该文件的目录下,输入一下命令:
>py pi.py 101 101
后两个值越大,那么越精确

更多内容见网页:http://www.pythontab.com/html/2013/pythonhexinbiancheng_0604/428.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-29 22:16:54 | 显示全部楼层
百度一下,你就知道!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-30 10:12:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 WylLy 于 2016-4-30 10:14 编辑

百度一下,会有很多的,而且算法什么的都有,下面就是我百度的一个,可以给你贴出来
import sys
import math
from decimal import *
   
def bbp(n):
    pi=Decimal(0)
    k=0
    while k <= n:
        pi+=(Decimal(1)/(16**k))*((Decimal(4)/(8*k+1))-(Decimal(2)/(8*k+4))-(Decimal(1)/(8*k+5))-(Decimal(1)/(8*k+6)))
        k+=1
    return pi
   
def main(argv):
   
    if len(argv) !=2:
        sys.exit('Usage: BaileyBorweinPlouffe.py <prec> <n>')
           
    getcontext().prec=(int(sys.argv[1]))
    my_pi=bbp(int(sys.argv[2]))
    accuracy=100*(Decimal(math.pi)-my_pi)/my_pi
   
    print("Pi is approximately "+str(my_pi), len(str(my_pi)))
    print("Accuracy with math.pi: "+str(accuracy))
       
if __name__=="__main__":
    main(sys.argv[1:])
将该段代码保存到pi.py
在命令行中切到该文件的目录下,输入一下命令:
>py pi.py 101 101
后两个值越大,那么越精确

更多内容见网页:http://www.pythontab.com/html/2013/pythonhexinbiancheng_0604/428.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-1 20:36:03 | 显示全部楼层
非常感谢。
我没有想用这么复杂的算法。
我想这么处理:
>>> import math
>>>import decimal
>>>decimal.getcontext().prec = 100
>>> print(decimal.Decimal(1)/decimal.Decimal(3))
0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

可以打印出100位小数。


>>> print(decimal.Decimal(1*math.pi))
3.141592653589793115997963468544185161590576171875

为什么打印不出100位小数??


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-2 20:28:57 | 显示全部楼层
sdhzfish 发表于 2016-5-1 20:36
非常感谢。
我没有想用这么复杂的算法。
我想这么处理:


math.pi的它只是3.141592653589793
而你这样打印出来的后面的数都不对,也不知道python是怎么计算的
要想得到更多的位数,你只能使用算法,而你那样得不到更多的位数,只是将math.pi打印出来
2016-05-02_202821.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 16:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表