с двойной точностью, 4.1 = 4.0999999999999996447286321199499070644378662109375 и 4.2 = 4.20000000000000017763568394002504646778106689453125. Другими словами, двоичное приближение к десятичному 4.1 немного меньше, чем вы ожидаете, а двоичное приближение к десятичному 4.2 немного больше.
Теперь, почему 0.20000000000000017 ... округлили до 0,2, а 0,099999999999999644 ... НЕ округлили до 0,1? Ruby, вероятно, округляет все выходные данные до 15 значащих десятичных цифр.