Taking the floor of a float
I have found two ways of taking floors in Python:
3.1415 // 1
and
import math
math.floor(3.1415)
The problem with the first approach is that it return a float (namely 3.0
). The second approach feels clumsy and too long.
Are there alternative solutions for taking floors in Python?
Solution 1:
As long as your numbers are positive, you can simply convert to an int
to round down to the next integer:
>>> int(3.1415)
3
For negative integers, this will round up, though.
Solution 2:
You can call int() on the float to cast to the lower int (not obviously the floor but more elegant)
int(3.745) #3
Alternatively call int on the floor result.
from math import floor
f1 = 3.1415
f2 = 3.7415
print floor(f1) # 3.0
print int(floor(f1)) # 3
print int(f1) # 3
print int(f2) # 3 (some people may expect 4 here)
print int(floor(f2)) # 3
http://docs.python.org/library/functions.html#int
Solution 3:
The second approach is the way to go, but there's a way to shorten it.
from math import floor
floor(3.1415)