2011年5月 9日

[ruby-list:48073] Re: 小数点つき時刻情報とTime#parse

えぐち@エスアンドイーです

2011年5月9日14:23 Tanaka Akira <akr@xxxxx>:
> 2011年5月9日13:43 EGUCHI Osamu <eguchi@xxxxx>:
>> 2011年5月9日12:55 Tanaka Akira <akr@xxxxx>:

> こっちはどうかなぁ。
>

>> class Time
>> TICK = 1000000
>> def -(y)
>> return ((self.tv_sec * TICK + self.tv_usec) -
>> (y.tv_sec * TICK + y.tv_usec)).to_f / TICK
>> end
>> end
>>
>> の様に、1マイクロ分解能で固定小数点処理したほうが
>> よりロバストではないでしゅうか?
>
> C に Bignum が組み込まれてればいいんですが。

2038年問題フリーな sizeof を .tv_sec が持っていれば、
尋常な日付を扱っている限りは安全だと思います。

% ruby -e 'p 2**63/1000000/(365.244*24*60*60)'
292275.824290862 [年]

また大きな(遠い未来の)日付を扱うには
Floatの仮数部の長さ(64ビット浮動小数で48ビット)は短か過ぎで

ruby -e 'p 2**48/1000000/(365.244*24*60*60)'
8.91955027932621

9年弱の長さでしか1秒の分解能を持てません。

Floatを返す仕様の間は、固定小数演算でもいいのでは?

 えぐち


投稿者 xml-rpc : 2011年5月 9日 15:01
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103665
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。