Why is division in Ruby returning an integer instead of decimal value?

ErwinM picture ErwinM · Mar 31, 2011 · Viewed 168.8k times · Source

For example:

9 / 5  #=> 1

but I expected 1.8. How can I get the correct decimal (non-integer) result? Why is it returning 1 at all?

Answer

mu is too short picture mu is too short · Mar 31, 2011

It’s doing integer division. You can use to_f to force things into floating-point mode:

9.to_f / 5  #=> 1.8
9 / 5.to_f  #=> 1.8

This also works if your values are variables instead of literals. Converting one value to a float is sufficient to coerce the whole expression to floating point arithmetic.