0

現在、pi を x の 10 進数に出力する小さなコードがあります。

#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 しか得られません。どうすればもっと印刷できますか?

4

1 に答える 1

0

コードのこの部分は gmp とは関係なく、標準の c++ 型を使用するため、問題はatan(1)*4単精度 (または倍精度) でのみ評価されることです。プログラムは最初に atan(1)*4 を評価し、次に結果を mpf_t に変換します。GMP のホームページに、桁数の多い円周率の計算方法に関するページがあります。

于 2013-07-27T09:50:30.273 に答える