In this article, we will learn about the TypeError: ‘float’ object can not be interpreted as an integer.
This error will occur in all the functions or methods. Where the function or method accepts only the integer value as a parameter. But instead, we have passed float values. The most common example is the range function. Since the range function only accepts an integer as a parameter.
For example, when we divide 16 by 8 using division operator ‘/’ in python, it’ll return a float value i.e. 2.0 and not an integer. This raises an error when we want an int as a parameter, but we have a float value.
Let us understand it more with the help of an example.
Example 1:
for i in range(3.0):
print(i)
print('end of loop')
Output:
File "float.py", line 1, in <module>
for i in range(3.0):
TypeError: 'float' object cannot be interpreted as an integer
In the above example, we did not perform any arithmetic operations. Instead, we passed a float value as a range parameter. In this case, the cause for the TypeError is that the range function does not take float value as a parameter.
Solution:
for i in range(3):
print(i)
print('end of loop')
Output:
0
1
2
end of loop
Example 2:
for i in range(16/8):
print(i)
print('end of loop')
Output:
Traceback (most recent call last):
File "pyprogram.py", line 1, in <module>
for i in range(16/8):
TypeError: 'float' object cannot be interpreted as an integer
In the above example, when we performed division operation inside the range() function. We got a float value (2.0). But the range function takes only an integer value as a parameter.
Thus the error “TypeError: 'float' object cannot be interpreted as an integer” is encountered.
Solution:
for i in range(5//8):
print(i)
print('end of loop')
Output:
0
1
end of loop
Unlike the division operator ‘/’ the floor division operator ‘//’ in python, returns an integer value. The floor division operator removes the digits after the decimal point. Thus we get an integer value.
So on dividing 16 by 8 using floor division operator ‘//’ we get ‘2’ as a parameter in range function. Thus no error is encountered, and we get the desired output.