现在我有这个小代码,我想将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.我怎么能打印更多?
答案 0 :(得分:0)
问题是atan(1)*4
只能用单精度(或双精度)来计算,因为这部分代码与gmp无关,并且将使用标准的c ++类型。程序将首先评估atan(1)* 4,然后将结果转换为mpf_t。
在GMP主页上有一个关于如何计算Pi with many digits的页面。