计算pi小数点后10000位

本文介绍了在C++中计算π小数点后10000位的方法,通过使用BBP公式来提高计算效率。作者首先尝试使用自定义的高精度类hp结合Wallis公式,但由于大数运算速度慢和公式收敛速度问题,转向采用BBP公式。该公式允许仅处理整数部分和每8位的小数部分,简化了高精度计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博客已搬家到 https://www.wanglp.site)

数据结构课上,老师让我们计算一下pi的10000位,复习一下面向对象。


**First Try:**定义一个高精度类hp(high precision),实现加减乘除,输入输出,然后随便找一个公式,比如Wallis公式,全都用hp进行计算。

**现实是:**大数乘大数或者大数除大数,实在是太慢了。而且Wallis公式收敛太慢。


Second Try先找到一个收敛较快的公司:BBP公式,观察公式发现,其实只需要定义一个具有如下特性的高精度类hp即可:整数部分用一个int表示,小数部分每8位用一个int保存,实现hp相加减,hp乘或除int即可。
HP.h

#ifndef HP_H
#define HP_H
#include<iostream>
#include<cstring>
#include<algorithm>
#include<iomanip>
using namespace std;
const int maxp=1250,maxn=2*maxp,base=1e8,width=8; //maxn表示双精度

class hp{
    public:
        int prec,s[maxn+10];   //s[0]保留整数部分,后面依次保留8位小数部分
        hp(){ *this = 0;}
        hp(int num){ *this = num;}
        hp operator=(int num);
        hp ope
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值