Как избежать gmpy2.floor(), возвращая mpfr вместо mpz?
После использования gmpy2.floor()
на mpz
переменная:
x = mpz(5)
x = gmpy2.floor(x/256)
x
имеет тип mpfr
и не mpz
больше, хотя, насколько я понимаю, floor всегда возвращает целые числа.
Как я могу избежать этого?
Я боюсь использовать x = mpz(gmpy2.floor(x/256))
снизит производительность, не так ли?
1 ответ
Решение
gmpy2
оборачивает MPFR
библиотека и возвращает mpfr
как тип результата.
См. http://www.mpfr.org/mpfr-current/mpfr.html.
К вашему сведению, Python 2.x возвращает float
от math.floor
, Поведение было изменено для Python 3.
Если вы ищете пол целочисленного деления, вы можете использовать //
,
>>> gmpy2.mpz(123456789)//256
mpz(482253)