0
上mpz
使用可變gmpy2.floor()
後:GMPY2 - 如何避免gmpy2.floor()返回mpfr而不是mpz?
x = mpz(5)
x = gmpy2.floor(x/256)
x
的類型爲mpfr
,而不是mpz
了,即使我的理解,地板總是返回一個整數。
我該如何避免這種情況?我想用x = mpz(gmpy2.floor(x/256))
會降低性能,不是嗎?
上mpz
使用可變gmpy2.floor()
後:GMPY2 - 如何避免gmpy2.floor()返回mpfr而不是mpz?
x = mpz(5)
x = gmpy2.floor(x/256)
x
的類型爲mpfr
,而不是mpz
了,即使我的理解,地板總是返回一個整數。
我該如何避免這種情況?我想用x = mpz(gmpy2.floor(x/256))
會降低性能,不是嗎?
gmpy2
包裝MPFR
庫,它返回一個mpfr
作爲結果類型。
見http://www.mpfr.org/mpfr-current/mpfr.html#Integer-Related-Functions
僅供參考,Python的2.x的返回從math.floor
一個float
。 Python 3.0的行爲已更改。
如果您正在尋找整數除法的地板,則可以使用//
。
>>> gmpy2.mpz(123456789)//256
mpz(482253)
謝謝casevh。最後一個問題:如果我正在做類似'math.floor(gmpy2.log2(mpz(2 ** 1024))'''這會返回'mpfr('1024.0')''有可能沒有辦法獲得mpz回右邊? – netik
我會盡可能避免浮點運算。 '(2 ** 1024).bit_length() - 1'怎麼樣? – casevh