(original) (raw)

Thank you! As you may or may not have noticed in a different thread, we're going through a small existential crisis regarding the usefulness of is\_integer() -- Serhiy believes it is not useful (and even an attractive nuisance) and should be deprecated. OTOH the existence of dec\_mpd\_isinteger() seems to validate to me that it actually exposes useful functionality (and every Python feature can be abused, so that alone should not be a strong argument for deprecation).

On Wed, Mar 21, 2018 at 1:33 AM, Robert Smallshire <rob@sixty-north.com> wrote:
As requested on the bug tracker, I've submitted a pull request for is\_integer() support on the other numeric types. https://github.com/python/cpython/pull/6121

These are the tactics I used to implement it:

- float: is\_integer() already exists, so no changes

- int: return True

- Real: return x == int(x). Although Real doesn't explicitly support conversation to int with \_\_int\_\_, it does support conversion to int with \_\_trunc\_\_. The int constructor falls back to using \_\_trunc\_\_.

- Rational (also inherited by Fraction): return x.denominator == 1 as Rational requires that all numbers must be represented in lowest form.

- Integral: return True

- Decimal: expose the existing dec\_mpd\_isinteger C function to Python as is\_integer()


\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: https://mail.python.org/mailman/options/python-dev/guido%40python.org




--
--Guido van Rossum (python.org/\~guido)