Does Ruby have a bug in its rounding? Why does it behave like this:
>> [1.14, 1.15, 1.16].map{|x| "%.1f" % x}
=> ["1.1", "1.1", "1.2"]
>> [1.4, 1.5, 1.6].map{|x| "%.0f" % x}
=> ["1", "2", "2"]
as in, why does 1.15 get rounded to 1.1, but 1.5 gets rounded to 2? At the very least, isn’t this inconsistent? the behaviour is the same in ruby 1.9.1 and ruby 1.8.7.
Take a look at my answer to this question
Why does Perl's sprintf not round floating point numbers correctly?
This may be the same thing