使用GMP以高精度打印pi

时间:2013-07-27 09:42:36

标签: c++ precision gmp

现在我有这个小代码,我想将pi打印到x小数:

#include <iostream>
#include <gmpxx.h>
#include <math.h>

using namespace std;

int main()
{
    mpf_set_default_prec(1000);
    mpf_t pi;
    mpf_init(pi); 
    mpf_set_d(pi, atan(1)*4);
    cout << pi << endl;

}

我只是将default_prec设置为1000,因为我认为这会给我足够的小数,但不管我设置的是什么,我只得到5.我怎么能打印更多?

1 个答案:

答案 0 :(得分:0)

问题是atan(1)*4只能用单精度(或双精度)来计算,因为这部分代码与gmp无关,并且将使用标准的c ++类型。程序将首先评估atan(1)* 4,然后将结果转换为mpf_t。 在GMP主页上有一个关于如何计算Pi with many digits的页面。