1

我编写了一个小程序来计算斐波那契数的位数,但由于数字很大,我不得不使用 MPFR 和 GMP。我得到了正确的值,但我需要能够将它们四舍五入到最接近的整数,并且 MPFR 包含的舍入模式可以预测地四舍五入到浮点值。有没有一种简单的方法可以将 mpfr_t 舍入为 int?

4

2 回答 2

1

您可以先使用mpfr_get_zGMP 函数,也可以直接使用mpfr_get_uimpfr_get_si.

于 2014-01-30T20:04:44.437 回答
0

MPFR 具有整数相关功能;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

于 2021-01-21T17:17:40.350 回答