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实现无证书加密解密实例
Oct 27 Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
Python lambda表达式用法实例分析
Dec 25 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
详解Python字符串切片
May 20 Python
python统计指定目录内文件的代码行数
Sep 19 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
用Python生成HTML表格的方法示例
Mar 06 Python
python语言中有算法吗
Jun 16 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 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学习之整理字符串
2011/04/17 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
php中JSON的使用与转换
2015/01/14 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
Smarty模板语法详解
2019/07/20 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
javascript prototype 原型链
2009/03/12 Javascript
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
详解vue v-model
2020/08/31 Javascript
Python 闭包的使用方法
2017/09/07 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
python 公共方法汇总解析
2019/09/16 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
质检员岗位职责
2013/12/17 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
病危通知单
2015/04/17 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书