All integers that can be represented by floating point numbers have an exact representation. So you can safely use int on the result. Inexact representations occur only if you are trying to represent a rational number with a denominator that is not a power of two.
That this works is not trivial at all! It's a property of the IEEE floating point representation that int∘floor = ⌊⋅⌋ if the magnitude of the numbers in question is small enough, but different representations are possible where int(floor(2.3)) might be 1.
To quote from Wikipedia,
Answer from Philipp on Stack OverflowAny integer with absolute value less than or equal to 224 can be exactly represented in the single precision format, and any integer with absolute value less than or equal to 253 can be exactly represented in the double precision format.
All integers that can be represented by floating point numbers have an exact representation. So you can safely use int on the result. Inexact representations occur only if you are trying to represent a rational number with a denominator that is not a power of two.
That this works is not trivial at all! It's a property of the IEEE floating point representation that int∘floor = ⌊⋅⌋ if the magnitude of the numbers in question is small enough, but different representations are possible where int(floor(2.3)) might be 1.
To quote from Wikipedia,
Any integer with absolute value less than or equal to 224 can be exactly represented in the single precision format, and any integer with absolute value less than or equal to 253 can be exactly represented in the double precision format.
Use int(your non integer number) will nail it.
print int(2.3) # "2"
print int(math.sqrt(5)) # "2"
Float and int function
How to convert float to int in program
floating point - Python float to int conversion - Stack Overflow
Converting large int value to float and back to int messes up the value?
Hello, please can someone explain to me when to use the float and int functions?
I mean should I use float when I am strictly dealing with decimal numbers, or when I want to convert whole numbers to decimal numbers?
pythonlearner
I created this program and was wondering that if someone were to input a decimal (ex: 1.5) for a rating, it would round down to 1 and show the correct number of starts. here's my code.
movie = input("Enter a movie: ")
stars = int(input("Rate between 1 and 5: "))
if stars == 1:
print(movie," *")
elif stars == 2:
print(movie," **")
elif stars == 3:
print(movie," ***")
elif stars == 4:
print(movie," ****")
elif stars == 5:
print(movie," *****")
if stars < 1:
print(movie," *")
elif stars > 5:
print(movie," *****")