吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1574|回复: 7
收起左侧

[讨论] c++计算pi的值的一般方法

[复制链接]
fzy1139950253 发表于 2021-3-19 23:42
计算时建议各位将变量类型全部设置为double,不然有时候出问题
+#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
            register int d;
                cout<<"输入计算次数"<<endl;
                cin>>d;
                register double a=100;
                register double b=1;
                double c;
                while(1)
                {
                b=b+2;
                a=double(a-100/b);
                b=b+2;
                a=double(a+100/b);
                c=a/25;
                system("cls");
                cout << "算得的pai&#1461;&#938;";
                printf("%.100f\n", c);

                if(b>d)
                {
                        break;
                }
        }
}

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
网络工程师 + 1 我很赞同!
joneqm + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yuleniwo 发表于 2021-3-20 08:57
// 这个是我以前收藏的,计算PI
//公式:∞  PI/2 = ∑ (n! / (2n+1)!!)  n= 0  这个公式收敛很快,计算2800项就可以精确到小数点后800位。

#include <stdio.h>

int a = 10000, b, c = 2800, d, e, f[2801], g;
int main(void)
{
        for(; b-c; )
                f[b++] = a / 5;
        for(; d=0,g=c*2; c -=14,printf("%.4d",e+d/a),e=d%a)
                for(b=c; d+=f[b]*a,f[b]=d%--g,d/=g--,--b; d*=b);
        return 0;
}
kof888 发表于 2021-3-20 10:48
yuleniwo 发表于 2021-3-20 08:57
// 这个是我以前收藏的,计算PI
//公式:∞  PI/2 = ∑ (n! / (2n+1)!!)  n= 0  这个公式收敛很快,计算28 ...

新人不懂问一下,第一个循环的b没赋值吗?初始值是多少?
yuleniwo 发表于 2021-3-20 17:36
kof888 发表于 2021-3-20 10:48
新人不懂问一下,第一个循环的b没赋值吗?初始值是多少?

全局变量。没写的话,默认初始化为0
kof888 发表于 2021-3-20 20:07
yuleniwo 发表于 2021-3-20 17:36
全局变量。没写的话,默认初始化为0

我记得有的编译器默认初始化是cc
yuleniwo 发表于 2021-3-20 21:55
kof888 发表于 2021-3-20 20:07
我记得有的编译器默认初始化是cc

这个是全局变量哦,不是局部变量。
爱飞的猫 发表于 2021-3-25 04:45
使用随机数计算,精度不高而且慢。
pi is: 3.14158

[C++] 纯文本查看 复制代码
#include <iostream>
#include <iomanip>
#include <map>
#include <random>
#include <cmath>

int main() {
  int total = 1000*1000*10;
  int inside = 0;

  std::random_device rd;
  std::mt19937 e2(rd());
  std::uniform_real_distribution<> dist(0, 1);

  for(int i = total; i > 0; i--) {
    double x = dist(e2);
    double y = dist(e2);
    bool is_in = sqrt(x * x + y * y) <= 1;
    if (is_in) inside ++;
  }

  double pi = 4.0 * inside / total;
  std::cout << "pi is: " << pi << std::endl;
}
 楼主| fzy1139950253 发表于 2021-4-1 23:33
jixun66 发表于 2021-3-25 04:45
使用随机数计算,精度不高而且慢。

我刚刚开始学c没多久,谢谢指点啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-17 03:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表