合格済みですが、メモしておきます。
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は完全に誤解していました。
どうして違うのでしょうか?