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里大整数相乘相关技巧指南
Sep 12 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
May 30 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
Python调用钉钉自定义机器人的实现
Jan 03 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
python和php哪个更适合写爬虫
Jun 22 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 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中取得文件的后缀名?
2012/02/20 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
旅游管理毕业生自荐信
2013/11/05 职场文书
公司放假通知范文
2015/04/14 职场文书
离婚财产分割协议书
2015/08/11 职场文书
英语导游欢迎词
2015/09/30 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android