我在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_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);
}
有更好的方法吗?我正在寻找快速的东西,因为我很多时候都在调用这个操作。