Convert '165.0' to int

Billy Mays 81282ed9a88799d21e77957df2d84bd6514d9af6 at myhashismyemail.com
Thu Jul 21 15:27:29 CEST 2011


On 07/21/2011 08:46 AM, Web Dreamer wrote:
> If you do not want to use 'float()' try:
>
> int(x.split('.')[0])
>

This is right.

> But, the problem is the same as with int(float(x)), the integer number is
> still not as close as possible as the original float value.
>
> I would in fact consider doing this:
>
> int(round(float(x)))

This is wrong, since there is a loss of information in the float cast:

 >>> float('9007199254740993.0')
9007199254740992.0

Notice the last digit switched from a 3 to a 2?  Floats in python don't 
have arbitrary accuracy.  You would need to import decimal and use it 
for rounding to work properly.

--
Bill



More information about the Python-list mailing list