整数の平均計算結果の最初の 100 桁を表示する必要があります。一連の整数は mpz_t 型の配列に格納され、合計されて mpq_t になり、別の mpq_t (カウント) で除算されます
コード:
mpq_t sum;
mpq_init(sum);
//same for variable count, they are filled from mpz_t
//display for check
gmp_printf("%.Qd\n", sum); <- here everything correct
gmp_printf("%.Qd\n", count); <- here also
mpq_div(sum, sum, count);
//to display with floating point
mpf_t avg;
mpf_init(avg);
mpf_set_q(avg, sum);
gmp_printf("%.100Ff\n", avg);
最後の行の表示、たとえば sum = 2、count = 3 が間違っています。約 10 ~ 15 桁の後に上限があり、0 で埋められます。(2/3) の場合、0.66666666670000...
だから2つのこと:
- 下限/上限を設定したくありません。100 桁の後に切り捨てます。
- 100 桁すべてを意味のある数字で埋める
したがって、(2/3)の望ましい出力は次のとおりです。
0.666...666 (100 の 6、最後に 6 もある)