From: Yusuke ENDOH Date: 2009-05-14T13:52:19+09:00 Subject: [ruby-dev:38446] [Bug:1.9] exact Time and inexact Time 遠藤です。 現在、Time#- が Rational を返すようになっています。 $ ./ruby -e 'p Time.now - Time.now' (-7/156250) しかし、Time.now のように inexact な時刻の差分が、exact の ように見える Rational になるのはよくないと思います。 Time.gm(2000) などは exact な時刻と考えられますが、それでも 以下で Rational が返るのは好ましくないと思います。 $ ./ruby -e 'p Time.gm(2000) + 0.1 - Time.gm(2000)' (3602879701896397/36028797018963968) よって Time オブジェクトに exact かどうかをあらわすフラグを 持たせる必要があるのではないでしょうか。 ただ、Time#- が Rational を返してもよいと思われる例は、 $ ./ruby -e 'p Time.gm(2000) + Rational(1, 2) - Time.gm(2000)' (1/2) くらいしか思いつきません。なので Time#- の結果を常に Integer または Float にするという選択もあるかもしれません。 とりあえず問題提起と提案です。どう思われますでしょう。 -- Yusuke ENDOH