簡體   English   中英

使用 MPFR 舍入為整數

[英]Rounding to Integer with MPFR

我寫了一個小程序來計算斐波那契數的位數,但由於數字有多大,我不得不使用 MPFR 和 GMP。 我得到了正確的值,但我需要能夠將它們四舍五入到最接近的整數,並且 MPFR 舍入中包含的舍入模式可以預見地浮點值。 有沒有一種簡單的方法可以將 mpfr_t 舍入到 int?

您可以先使用mpfr_get_z再使用 GMP 函數,或者直接使用mpfr_get_uimpfr_get_si

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM