Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >pi (π)是如何计算的?

pi (π)是如何计算的?
EN

Stack Overflow用户
提问于 2010-04-16 16:52:12
回答 11查看 37.1K关注 0票数 36

我怎么才能写一个函数把pi (π)返回给给定的小数位数呢?

速度不是问题。我一直在看http://bellard.org/pi/,但我仍然不明白如何获得pi的第n位。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-04-16 17:00:00

在微积分中有一种叫做泰勒级数的东西,它提供了一种简单的方法来计算任意精度的许多无理性值。

Pi/4 =1- 1/3 + 1/5 - 1/7 + ...

(来自http://www.math.hmc.edu/funfacts/ffiles/30001.1-3.shtml )

继续添加这些项,直到您希望的精度位数稳定下来。

泰勒定理是一个强大的工具,但使用该定理推导这个级数超出了问题的范围。这是大学一年级的标准微积分,如果你对更多细节感兴趣,可以很容易地用谷歌搜索。

我并不是说这是计算圆周率最实用的方法。这取决于你为什么真的需要这么做。出于实际目的,您只需从众多已发布的版本中复制所需数量的数字即可。我建议这是一个简单的介绍如何将无理性值等同于无穷级数。

票数 31
EN

Stack Overflow用户

发布于 2010-04-16 18:32:21

试试"Computation of the n'th digit of pi in any base in O(n^2)“。它可能是已知的最快的算法,它不需要任意(读取大量)精度的浮点数,并且可以直接以10为基数(或任何其他)给出结果。

票数 7
EN

Stack Overflow用户

发布于 2010-04-16 19:01:02

作为JeffH存储每个变体的方法的替代方法,您可以只存储最大位数,并删除不需要的位数:

代码语言:javascript
运行
AI代码解释
复制
#include <string>
#include <iostream>
using std::cout; using std::endl; using std::string;

// The first 99 decimal digits taken from:
// http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html
// Add more as needed.
const string pi =
  "1415926535"
  "8979323846"
  "2643383279"
  "5028841971"
  "6939937510"
  "5820974944"
  "5923078164"
  "0628620899"
  "8628034825"
  "342117067";

// A function in C++ that returns pi to X places
string CalcPi(const size_t decimalDigitsCount) 
{
  string returnValue = "3";
  if (decimalDigitsCount > 0)
  {
    returnValue += "." + pi.substr(0, decimalDigitsCount);
  }
  return returnValue;
} 

int main()
{
  // Loop through all the values of "pi at x digits" that we have. 
  for (size_t i = 0; i <= pi.size(); ++i) 
  {
    cout << "pi(" << i << "): " << CalcPi(i) << endl;
  } 
}

http://codepad.org/6mqDa1zj

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2654749

复制
相关文章
Python 类的构造函数
类的构造函数 类中的一种默认函数,用来将类实例化的同时, 将参数传入类中 构造函数的创建 def __init__(self, a, b) self.a = a self.b = b 代码 # coding:utf-8 def sleep(name): return name class Person(object): def __init__(self, name, age=None): self.name = name self.age =
Zkeq
2022/05/18
1.4K0
反射类的构造函数
<!-- 首先,通过Class获取类的字节码 Class clazz = Class.forName("com.marer.reflect.Person"); 然后,利用Constructor创建对象 Constructor c = clazz.getConstructor(null);//获取无参的构造函数 Constructor c = clazz.getConstructor(String.class);//获取参数为String的构造函数 Constructor c = clazz.getConstructor(String.class, int.class);//获取参数为String,int的构造函数 Constructor c = clazz.getDeclaredConstructor(List.class);//获取隐藏为private的构造函数 c.setAccessible(true);//暴力反射 创建对象的另外一种途径,反射出类的无参构造函数并创建对象 Class clazz = Class.forName("com.marer.reflect.Person"); Person p = (Person) clazz.newInstance(); 但是当无参的构造函数为private或不存在的时候,反射抛异常 转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49822819 但是可以通过暴力反射获取类的隐藏构造函数: Constructor.setAccessible(true);
MonroeCode
2018/01/11
1.1K0
类的成员函数(构造、析构、拷贝构造、赋值、运算符重载)的实现
以String类为例实现其成员函数 class String { //友元函数重载运算符 friend ostream& operator<<(ostream &out,String& str); friend istream& operator>>(istream& in, String& str); public: //通用构造函数 String(const char* str) { if(!str) //对m_data加NULL判断 { length = 0; m_da
WindSun
2019/08/30
1.1K0
解析C#类中的构造函数
彭泽0902
2018/01/04
3.5K0
类中的构造方法
构造方法是正常开发中不可或缺的一部分,是语法上必须存在的。是一个具有特殊格式的方法,且有特殊的调用方式。
星哥玩云
2022/09/14
1.1K0
类中的构造方法
成员以其在类中声明的顺序构造
分析以下代码的输出: #include<iostream> using namespace std; class A { public: A(int j):age(j) , num(age + 1) { cout<<"age:"<<age<<",num:"<<num<<endl; } protected: int num; int age; }; void main() { A sa(15); }  运行结果:age:15 , num:2(num为一个随机数) 由于按成员在类定义中的声明
猿人谷
2018/01/17
1.6K0
dart系列之:dart类中的构造函数
dart作为一种面向对象的语言,class是必不可少的。dart中所有的class,除了Null都继承自Object class。 要想使用dart中的类就要构造类的实例,在dart中,一个类的构造函数有两种方式,一起来看看吧。
程序那些事
2021/11/14
3.4K0
C++中类的构造函数和析构函数
构造函数 对象创建的时候执行 student s //空参构造函数 栈内存中 student s("测试")//带参构造函数 栈内存中 或者 student *s=new student//空参构造函
乱码三千
2021/07/29
2.1K0
C++中类的构造函数和析构函数
dart(四)--类、构造函数、方法dart(四)--类、构造函数、方法
类 构造函数 构造函数 className 或 className.identifier, 关键字 new 可选. 构造函数语句执行顺序:初始化器,父类构造函数,子类构造函数。 class Point { num x, y, distance; /* 1,匿名构造函数 2,使用this.x 简化写法,原写法: Point(num x , num y) 3,此处 : 后为初始化器,初始化的结果赋值给初始化器的对象,是最简洁的方式。
用户8893176
2021/08/09
1.4K0
小朋友学C++(10):子类构造函数调用父类构造函数
从哲学层面来看,子类会继承父类除private以外的所有成员。 因为构造函数是公有的,所以理所当然地会被子类继承。 程序1: #include <iostream> using namespace std; class Shape { public: Shape() { cout << "Shape's constructor method is invoked!\n"; } }; class Rectangle : public Shape { public:
海天一树
2018/04/17
1.5K0
类的构造函数和析构函数
一、构造函数和析构函数的由来 类的数据成员不能在类的声明时候初始化,为了解决这个问题? 使用构造函数处理对对象的初始化。构造函数是一种特殊的成员函数,与其他函数不同,不需要用户调用它,而是创建对象的时
用户5521279
2019/06/02
1.9K0
虚函数中构造函数的调用顺序
1 /*曾经有段时间一直被构造函数中的虚函数所困扰,现在通过自己重新学习了一遍,标注一下容易忘记的知识*/ 2 #include<iostream> 3 using namespace std; 4 class Base0 5 { 6 public: 7 Base0(int var):var0(var) 8 { 9 cout<<"Construct base0"<<endl; 10 } ; 11 int var0; 12 void fun()
Gxjun
2018/03/22
3.7K0
虚函数中构造函数的调用顺序
构造Python中的常量类
通过命名风格来提示使用者该变量代表的意义为常量,比如MAX_NUMBER、TOTAL。然而这种方式并没有真正实现常量,其对应的值仍然可以被改变,这只是一种约定俗成的风格。
py3study
2020/01/07
3.4K0
matlab中类的重载简析
MyData bar 方法与 MATLAB bar 函数同名。但是,MyData bar 方法需要 MyData 对象作为输入。由于该方法针对 MyData 对象而特化,因此它可以从 Data 属性中提取数据并创建特化图。
演化计算与人工智能
2020/08/14
3560
python中类的构造方法
如果是继承关系,那么子类也有构造方法。如果子类存在构造方法,继承关系成立后,最终的结果也还是以子类的构造方法为准。
刘金玉编程
2019/08/13
2.2K0
Android 通过 JNI 调用 Java 类的构造方法和父类的方法
Android 还可以通过 JNI 来调用 Java 一个类的构造方法,从而创建一个 Java 类。
音视频开发进阶
2019/07/26
2.8K0
ASP.NET AJAX(6)__Microsoft AJAX Library中的面向对象类型系统命名空间类类——构造函数类——定义方法类——定义属性类——注册类类——抽象类类——继承类——调用父类方
如果我们可以合理的使用面向对象编程,我们可以提高代码的复用性和可维护性,这里强调的是合理的使用,有了面向对象类型系统,就可以使用一些成熟的设计方式 命名空间 合理的组织大量的类型,使开发人员能够方便的找到他们所需要的类型 可重复注册命名空间,每个独立的脚本模块前都要注册命名空间以保证命名空间存在 类 定义构造函数 定义成员(方法、属性、事件) 注册类 类——构造函数 类的构造函数即为function定义 通常用于初始化域变量 自由成员使用下划线开头(形式上的封装) 类——定义方法 使用prototype定义
小白哥哥
2018/03/07
6.3K0
C++ 类构造函数&解析函数
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数 constructor,它通过声明一个与 class 同名的函数来定义。当且仅当要生成一个 class 的新的实例 (instance)的时候,也就是当且仅当声明一个新的对象,或给该 class 的一个对象分配内存的时候,这个构造函数将自动被调用。
嵌入式视觉
2022/09/05
1.6K0
C++ 类构造函数&解析函数
点击加载更多

相似问题

Angular扩展类构造函数重载

232

在函数中调用扩展类的构造函数

10

扩展类PHP时重载函数构造

11

Blackberry Screen类中的超级构造函数调用

41

在Java中调用超类的重载构造函数

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档