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编程中装饰器的使用示例解析
Jun 20 Python
Python中你应该知道的一些内置函数
Mar 31 Python
Python使用matplotlib填充图形指定区域代码示例
Jan 16 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
让代码变得更易维护的7个Python库
Oct 09 Python
python scipy卷积运算的实现方法
Sep 16 Python
基于Python正确读取资源文件
Sep 14 Python
python 发送邮件的四种方法汇总
Dec 02 Python
用Python简陋模拟n阶魔方
Apr 17 Python
基于tensorflow权重文件的解读
May 26 Python
教你漂亮打印Pandas DataFrames和Series
May 29 Python
Golang Web 框架Iris安装部署
Aug 14 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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
Python脚本实现集群检测和管理功能
2015/03/06 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
python实现二叉查找树实例代码
2018/02/08 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
wxPython多个窗口的基本结构
2019/11/19 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
python删除某个目录文件夹的方法
2020/05/26 Python
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
C语言编程练习
2012/04/02 面试题
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
电话客服工作职责
2014/07/27 职场文书
个人授权委托书样本
2014/09/13 职场文书
安全保证书格式
2015/02/28 职场文书
如何拟写通知正文?
2019/04/02 职场文书
如何理解及使用Python闭包
2021/06/01 Python
分析Python list操作为什么会错误
2021/11/17 Python
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏
python热力图实现的完整实例
2022/06/25 Python