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和shell变量互相传递的几种方法
Nov 20 Python
Python import自定义模块方法
Feb 12 Python
Python实现图像几何变换
Jul 06 Python
利用python获取Ping结果示例代码
Jul 06 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
我就是这样学习Python中的列表
Jun 02 Python
简单了解python变量的作用域
Jul 30 Python
Pytorch之Variable的用法
Dec 31 Python
flask框架蓝图和子域名配置详解
Jan 25 Python
tensorflow使用指定gpu的方法
Feb 04 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
opencv 阈值分割的具体使用
Jul 08 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
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
layui中table表头样式修改方法
2018/08/15 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
python列表返回重复数据的下标
2020/02/10 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
业务代表的岗位职责
2013/11/16 职场文书
教育课题研究自我鉴定范文
2013/12/28 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
小学家长学校培训材料
2014/08/24 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang
html5实现点击弹出图片功能
2021/07/16 HTML / CSS