我写了一个小程序,用来计算斐波纳契数的数字,但由于数字的大小,我不得不使用MPFR和GMP。我得到正确的值,但我需要能够将它们四舍五入到最接近的整数,并且MPFR包含的舍入模式可以预测浮动值。是否有一种简单的方法可以将mpfr_t舍入到int?
答案 0 :(得分:0)
您可以先使用mpfr_get_z
然后使用GMP功能,也可以直接使用mpfr_get_ui
或mpfr_get_si
。
答案 1 :(得分:0)
MPFR 有 integer related functions; round、floor、ceil、truncate 和最近的整数以转换整数
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 到最近的可表示整数,从零舍入中途情况(如IEEE 754-2008 的 roundTiesToAway 模式),以及 mpfr_trunc 到下一个可表示的整数,趋向于零。
然后使用 mpfr_get_z
之类的转换得到 mpz_t
。