質問
私はGMPを使用しています、と私はすぐにmpz
にmpf
を変換できるようにしたいです。私は、ライブラリを見て、多くを見つけることができませんでした。
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文字列に整数と浮動小数点に戻ってそれを読み出す。
所属していません StackOverflow