[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