On Fri, 15 Feb 2008, Mark Dickinson wrote: > On Tue, Feb 12, 2008 at 1:52 AM, Raymond Hettinger <[EMAIL PROTECTED]> wrote: > >> Also, it would be useful to have a new method, float.is_integer(). This >> would be better than the current approach where we make the >> test: if x == floor(x). > > How common is this test? Given the inexact nature of floating-point > arithmetic, checking whether a float is exactly an integer seems like > something that one might actually want to discourage, just like comparing > two floats for equality.
Depending on the nature of the computations that produced the float result, there may be no problem with the result being different from the mathematical result. For example, if you are adding up a bunch of multiples of 1/2, a sufficient condition for an exact result is that the (mathematical) total of the absolute values of the numbers isn't too big. After such a computation, meeting the given condition, checking for an integer result is guaranteed to be meaningful and to match what is mathematically wanted. I can't say how often one needs to check a float for being an integer. I believe that "x == floor(x)" is equivalent to "not (x % 1)" which also generalizes to checking for an exact multiple of values other than 1. I suspect, but do not have evidence, that circumstances in which it is useful to check for an integer are likely to be ones in which there is a better-than-usual chance of getting precise float results. How often are you going to check the output of sin() for being an integer? But on the other hand pitfalls will occur if we, for example, replace 1/2 in my example with 1/10, since these are not generally representable in float format. Isaac Morland CSCF Web Guru DC 2554C, x36650 WWW Software Specialist _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com