Getting fractional part from a float without using string operations

srinivasan srinivas sri_annauni at yahoo.co.in
Thu Nov 20 01:01:39 EST 2008


Yes it works for most of the cases.  But it doesn't for the following case:

>>> str(abs(int(1234567.89)-1234567.89))
'0.889999999898'

Thanks,
Srini


----- Original Message ----
From: Tino Wildenhain <tino at wildenhain.de>
To: srinivasan srinivas <sri_annauni at yahoo.co.in>
Cc: Jeremiah Dodds <jeremiah.dodds at gmail.com>; python-list at python.org
Sent: Wednesday, 19 November, 2008 7:33:46 PM
Subject: Re: Getting fractional part from a float without using string operations

srinivasan srinivas wrote:
> Yes. But it didn't give only the expected decimals.
> For ex:
>  >>> a = 1.23
>  >>> abs(int(a) -a)
> 0.22999999999999998
>  I would like to get the result '0.23' only.

well, thats what get stored internally - there
is no way around it if you are using floating
point numbers:

>>> 0.23
0.23000000000000001

but str() handles the rounding correctly:

>>> print 0.23
0.23

>>> print abs(int(a) -a)
0.23

See also http://en.wikipedia.org/wiki/Floating_point
for the problems with FP figures.

Regards
Tino



      Get perfect Email ID for your Resume. Grab now http://in.promos.yahoo.com/address



More information about the Python-list mailing list