我需要顯示整數平均運算結果的前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