我需要显示整数平均运算结果的前100位数字。整数的系列被存储在mpz_t类型的阵列,那么它求和以mpq_t并除以另一个mpq_t(计数)GMP-除法精度或打印问题
代码:
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);
在最后一行的显示,比方说对于总和= 2, count = 3是错误的。这是后约10-15位ceiled和充满0。(2/3)这是0.66666666670000 ......
所以两两件事:
- 我不想楼/小区吧,后100位数字只需截断
- 填充所有100位有意义的数字
所以对于(2/3)所需的输出是:
0.666 ... 666(以百6,也与6结束)
使用gmp实现它的任何机会? – deha
我扩展了答案。 – casevh