Это не для меня, когда я это сделал:
a = Time.now.to_f
=> 1327018729.22437
b = (a + 4.days).to_f
=> 1327364329.22437
Я считаю, что это всего лишь небольшая круглая проблема, типичная для чисел с плавающей запятой, и вы обнаружили небольшую ошибку точности.
Это намного меньше секунды, то есть .0000001 дня.Учитывая, что в день есть только 86 400 секунд, это часто не проблема, хотя есть веская причина хранить даты как даты и делать арифметику дат на Ruby.