RubyのDateTimeの差分

合格済みですが、メモしておきます。
gold対策(模擬試験16)。
 
DateTimeの演算結果のclassを問う問題です。

require 'Date'
d1 = DateTime.new
d2 = DateTime.new
d3 = d2 - d1 # => (0/1)
d3.class # => Rational

なんとRationalです。
 
分かりやすいようにDateTime#nowでやると下記のようになります。

d1 = DateTime.now
d2 = DateTime.now
d3 = d2 - d1 # => (7/43200000000)
d3.class # => Rational

Dateも同様です。

d1 = Date.new
d2 = Date.new
d3 = d2 - d1 # => (0/1)
d3.class # => Rational

ついでに、Timeでやると

t1 = Time.now
t2 = Time.now
t3 = t2 - t1 # => 4.0e-06
t3.class # => Float

これは、予想通りFloatです。
というかDateTime/Dateは完全に誤解していました。
どうして違うのでしょうか?