Robert Smallshire added the comment:

As for whether the shortcut float.is_integer(x) was needed, it has different 
behavior to x==int(x) when x is either NaN or an infinity.  We must even deal 
with two different exception types OverflowError or ValueError respectively for 
these two values on conversion to int. That float.is_integer() simply returns 
False for these values makes it more straightforward to use robustly. The same 
would go for Decimal, which has the same behavior with respect to NaNs and 
infinities as float.

I agree that is_integral may have been a better name, although is_integer has 
the advantage that it avoids conflating numeric values with either of the types 
'int' or 'Integral'.

The motivation for my patches is to converge the interfaces of the various 
number types so that we can simply, and robustly, check for integer values (as 
opposed to integer types) without needing to be concerned about the concrete 
number type, so long as it is Real.  Indeed, this is largely the point of 
having a numeric tower at all.  I am more motivated by usability and concision 
and correctness than efficiency concerns: I believe that where
possible we should allow one number type to be substituted for another, and in 
particular `int` for any other Real type where purely mathematical - rather 
than representational operations - are in play.

Use of the existing float.is_integer is compromised by the fact that people 
have an entirely reasonably habit of passing integers (particularly literals) 
to functions which accept floats which then fail if they use float.is_integer.

Adding this method would reduce the educational load as the various number 
types would be more similar, not less.

I work in industrial fields where computational geometry, and hence rationals, 
floats, infinities and large integers are a day-to-day occurrence. Ultimately, 
I care more about consistency within the numeric tower types (Real, float, int, 
Rational, Integral, Fraction) than I do about Decimal, which is why I separated 
my changes to Decimal into a separate patch.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue26680>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to