C GMP最近整数
我在C中使用GMP,我想将C GMP最近整数,c,gmp,C,Gmp,我在C中使用GMP,我想将mpf四舍五入为mpz的整数。是否有GMP职能部门可以做到这一点?我的工作是: void Mpf_round(mpz_t rop, const mpf_t op, int PRECISION){ mpf_t dummy; mpf_init2(dummy,PRECISION); int compare_int; mpf_floor(dummy,op); mpf_sub(dummy,op,dummy); compare_int=mpf
mpf
四舍五入为mpz
的整数。是否有GMP职能部门可以做到这一点?我的工作是:
void Mpf_round(mpz_t rop, const mpf_t op, int PRECISION){
mpf_t dummy; mpf_init2(dummy,PRECISION);
int compare_int;
mpf_floor(dummy,op);
mpf_sub(dummy,op,dummy);
compare_int=mpf_cmp_d(dummy,0.5);
mpf_floor(dummy,op);
if(compare_int>0){
mpf_add_ui(dummy,dummy,1);
mpz_set_f(rop,dummy);
}
else
mpz_set_f(rop,dummy);
mpf_clear(dummy);
}
有更好的方法吗?我正在寻找一些快速的东西,因为我经常称这个行动为 我建议转到MPFR(曾经是GMP的一部分),其中MPFR_get_z有一个舍入参数。对于旧代码,mpf_t保留在GMP中,但新代码应使用MPFR。