質問

私はGMPを使用しています、と私はすぐにmpzmpfを変換できるようにしたいです。私は、ライブラリを見て、多くを見つけることができませんでした。

:私の考えることができる最高のものは、このました
mpz_t x;
/* Insert code here that assigns some value to x */
char buf[SIZE];
gmp_sprintf(buf, "%Zd", x);
mpf_t y;
mpf_set_str(y, buf);

このソリューションは、文字列にしてから繰り返しの変換が必要です。また、それはSIZEによって制限され、私は大きなSIZEをする必要がありますどのように所定への道を見ていません。この変換を行うための任意のより良い方法はありますか?

役に立ちましたか?

解決

mpf_set_z (mpf_t rop, mpz_t op)を使用してはどうですか?

また、(私はあなたがこれをやったと仮定)あなたのMPZとMPFの変数はmpf_init(mpf_t x)mpz_init(mpz_t x)で初期化する必要があるでしょう。

あなたがしたいのでます:

mpz_t x;
mpz_init(x);
/* Insert code here that assigns some value to x */
mpf_t y;
mpf_init(y);
mpf_set_z(y,x);

他のヒント

うわー、私は彼らもそれのような機能が含まれて驚いsprintfの悪い評判を与えられます。

mpz_sizeinbase のあなたが必要になりますどのくらいのスペースを把握するために使用することができます整数のベース10の表現を保持します。そして、答え、他の人が正しいか、 mpf_set_z に変換するよりもはるかに良い方法ですベース10文字列に整数と浮動小数点に戻ってそれを読み出す。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top