用MPFR舍入整数

Rounding to Integer with MPFR

本文关键字:整数 舍入 MPFR      更新时间:2023-10-16

我已经编写了一个小程序来计算斐波那契号的数字,但是由于数字的大小,我不得不使用MPFR和GMP。我得到了正确的值,但是我需要能够将它们围成最接近的整数,并且可以预见的是,MPFR圆圈中包含的圆形模式到浮点值。是否有一种简单的方法可以执行MPFR_T舍入到INT?

您可以首先使用mpfr_get_z,然后使用GMP功能,或直接mpfr_get_uimpfr_get_si

mpfr具有与整数相关的功能;圆,地板,天花板,截断和最近的整数转换整数

int mpfr_rint (mpfr t rop, mpfr t op, mp rnd t rnd)
int mpfr_ceil (mpfr t rop, mpfr t op) 
int mpfr_floor (mpfr t rop, mpfr t op)
int mpfr_round (mpfr t rop, mpfr t op)
int mpfr_trunc (mpfr t rop, mpfr t op)

将ROP设置为OP将其四舍五入到整数。MPFR_RINT在给定的圆形模式下,MPFR_CEIL在下一个更高或相等的代表整数,mpfr_floor到下一个较低或相等代表的整数,mpfr_round,mpfr_floor,mpfr_floor,mpfr_floor,mpfr_floor,mpfr_round到最近的代表性整数,从零圆形的情况(如in in in in)IEEE 754-2008的RoundTiestOaway模式),然后mpfr_trunc to下一个代表整数朝零。

然后使用mpfr_get_z之类的转换获取mpz_t