From: EGUCHI Osamu Date: 2011-05-09T15:01:42+09:00 Subject: [ruby-list:48073] Re: 小数点つき時刻情報とTime#parse えぐち@エスアンドイーです 2011年5月9日14:23 Tanaka Akira : > 2011年5月9日13:43 EGUCHI Osamu : >> 2011年5月9日12:55 Tanaka Akira : > こっちはどうかなぁ。 > >> 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を返す仕様の間は、固定小数演算でもいいのでは?  えぐち