Python实现计算圆周率π的值到任意位的方法示例


Posted in Python onMay 08, 2018

本文实例讲述了Python实现计算圆周率π的值到任意位的方法。分享给大家供大家参考,具体如下:

一、需求分析

输入想要计算到小数点后的位数,计算圆周率π的值。

二、算法:马青公式

π/4=4arctan1/5-arctan1/239

这个公式由英国天文学教授约翰·马青于1706年发现。他利用这个公式计算到了100位的圆周率。马青公式每计算一项可以得到1.4位的十进制精度。因为它的计算过程中被乘数和被除数都不大于长整数,所以可以很容易地在计算机上编程实现。

Python实现计算圆周率π的值到任意位的方法示例

三、python语言编写出求圆周率到任意位的程序如下:

# -*- coding: utf-8 -*-
from __future__ import division
####################导入时间模块
import time
###############计算当前时间
time1=time.time()
################算法根据马青公式计算圆周率####################
number = int(raw_input('请输入想要计算到小数点后的位数n:'))
# 多计算10位,防止尾数取舍的影响
number1 = number+10
# 算到小数点后number1位
b = 10**number1
# 求含4/5的首项
x1 = b*4//5
# 求含1/239的首项
x2 = b// -239
# 求第一大项
he = x1+x2
#设置下面循环的终点,即共计算n项
number *= 2
#循环初值=3,末值2n,步长=2
for i in xrange(3,number,2):
  # 求每个含1/5的项及符号
  x1 //= -25
  # 求每个含1/239的项及符号
  x2 //= -57121
  # 求两项之和
  x = (x1+x2) // i
  # 求总和
  he += x
# 求出π
pai = he*4
#舍掉后十位
pai //= 10**10
############ 输出圆周率π的值
paistring=str(pai)
result=paistring[0]+str('.')+paistring[1:len(paistring)]
print result
time2=time.time()
print u'总共耗时:' + str(time2 - time1) + 's'

运行结果:

请输入想要计算到小数点后的位数n:20
3.14159265358979323846
总共耗时:9.77699995041s

请输入想要计算到小数点后的位数n:50
3.14159265358979323846264338327950288419716939937510
总共耗时:2.30099987984s

运行截图如下:

Python实现计算圆周率π的值到任意位的方法示例

Python实现计算圆周率π的值到任意位的方法示例

Python 相关文章推荐
python利用beautifulSoup实现爬虫
Sep 29 Python
python开发中module模块用法实例分析
Nov 12 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
利用python模拟实现POST请求提交图片的方法
Jul 25 Python
python pexpect ssh 远程登录服务器的方法
Feb 14 Python
详解Python正则表达式re模块
Mar 19 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
python的turtle库使用详解
May 10 Python
基于python-pptx库中文文档及使用详解
Feb 14 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
python爬虫scrapy框架的梨视频案例解析
Feb 20 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 #Python
Python读写docx文件的方法
May 08 #Python
python docx 中文字体设置的操作方法
May 08 #Python
Python解析并读取PDF文件内容的方法
May 08 #Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 #Python
对Python中gensim库word2vec的使用详解
May 08 #Python
用python处理MS Word的实例讲解
May 08 #Python
You might like
PHP4实际应用经验篇(9)
2006/10/09 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
Jquery 弹出层插件实现代码
2009/10/24 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
python实现机器人卡牌
2019/10/06 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
拉丁舞学习者的自我评价
2013/10/27 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
抗洪抢险事迹材料
2014/05/06 职场文书
营销团队口号
2014/06/06 职场文书
党员证明信
2015/06/19 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis