Project

General

Profile

Actions

Bug #1468

closed

exact Time and inexact Time

Added by mame (Yusuke Endoh) almost 16 years ago. Updated almost 14 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:38446]

Description

=begin
遠藤です。

現在、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
=end


Related issues 1 (0 open1 closed)

Has duplicate Ruby - Bug #1481: exact Time and inexact TimeClosedActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0