[Tutor] How to sort float number from big numbers to small numbers?

Steven D'Aprano steve at pearwood.info
Mon Sep 25 12:52:58 EDT 2017


On Mon, Sep 25, 2017 at 03:34:05AM +0000, edmundo pierre via Tutor wrote:

> I am trying to sort float numbers input by an user from the bigger to 
> smaller number. I do not know how to compare float numbers. Any ideas? 
> Thank you!

If the numbers are provided by the user, they will be in the form of 
strings, so you have to convert to float first:

# pretend these came from the user
a = '1.2'
b = '100.9'
c = '2.4'
alist = [a, b, c]
alist.sort()
print(alist)


will print the result:

['1.2', '100.9', '2.4']


which is not what you want. Instead, do this:


# pretend these came from the user
a = '1.2'
b = '100.9'
c = '2.4'
alist = [float(a), float(b), float(c)]
alist.sort()
print(alist)


which will print

[1.2, 2.4, 100.9]

instead.

Also, you can make a copy of the list using sorted() instead of sort():

alist = [float(a), float(b), float(c)]
print(sorted(alist))


Be warned: some numbers which can be written exactly in decimal, like 
0.1, may sometimes appear ever-so-slightly "off" when you convert to a 
float. This is not a bug, but an unfortunate side-effect of the way 
computers do arithmetic in base 2 (binary). Feel free to ask if you 
would like more information.



-- 
Steve


More information about the Tutor mailing list