私は2つの整数(gmpz_t)を持っており、それらを分数で表す必要があります(1つは分子、もう1つは分母)。私が見つけた唯一の解決策は、char* mpz_get_str (char *str, int base, mpz_t op)
両方をに変換し、char*
それらを「/」で連結して int mpq_set_str (mpq_t rop, char *str, int base)
から、値を有理数に入れるために使用することです。しかし、それは大変な努力のように思えます。もっと良い方法があるに違いないと思います。
質問する
214 次
3 に答える
2
mpq_t
それぞれをviaに変換してからmpq_set_z
、分割してみませんか?
于 2012-11-05T21:20:32.847 に答える
0
具体的には、mpz_t rn, rd
(分子、分母)がある場合、これが私の解決策になります。
mpq_t ratn, ratd, t;
mpq_init(ratn);
mpq_init(ratd);
mpq_set_z(ratn, rn);
mpq_set_z(ratd, rd);
mpq_init(t);
mpq_div(t, ratn, ratd);
mpq_clear(ratn);
mpq_clear(ratd);
...
do something with t
...
mpq_clear(t);
于 2015-11-23T07:47:52.017 に答える
0
ドキュメントから、いくつかのから分子と分母を別々に設定することを可能にする関数がありmpq_set_num
ます。より一般的には、(resp。)を使用すると、の分子(または分母)を、のように操作できるため、を呼び出すことができます。安全のため、後で電話します。mpq_set_den
mpz_t
mpq_numref
mpq_denref
mpq_t
mpz_t
mpz_set(mpq_numref(q),z)
mpq_canonicalize
于 2015-11-23T08:19:42.873 に答える