Как избежать 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)
Другие вопросы по тегам