[Tutor] exceptions problem

Peter Otten __peter__ at web.de
Sat Sep 11 12:56:11 CEST 2010


Steven D'Aprano wrote:

> On Sat, 11 Sep 2010 09:56:41 am bob gailer wrote:
>> > I never thought that you can use a float and a integer to look if
>> > the number is a integer.
>>
>> You can't.
> 
> What? Of course you can.
> 
> def is_integer(x):
>     """Return True if x is an integer."""
>     try:
>         return 1.0*x == int(x)
>     except (TypeError, ValueError):
>         return False

> The multiplication by 1.0 is not actually needed, but it doesn't hurt.
> 
> [thinks more carefully...] Actually it does hurt:
> 
>>>> is_integer(Decimal(2))
> False

Another problem is the limited precision of floats:

>>> x = 10**22
>>> 1.0*x == x
True
>>> x *= 10
>>> 1.0*x == x
False
 
Peter



More information about the Tutor mailing list