我需要显示整数平均计算结果的前 100 个含义数字。整数系列存储在 mpz_t 类型的数组中,然后将其与 mpq_t 相加并除以另一个 mpq_t (count)
代码:
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...
所以有两件事:
- 我不想把它放在地板/天花板上,只是在 100 位数字后截断
- 用有意义的数字填充所有 100 位数字
因此,对于(2/3)所需的输出是:
0.666...666(一百个6,最后也是6)