From: Mitsuo KASAHARA Date: 2011-05-09T10:29:36+09:00 Subject: [ruby-list:48062] 小数点つき時刻情報とTime#parse 笠原ともうします。 小数点付きの時刻情報を Time#parse で時間差を計算していたところ、間欠で 微妙な出力が発生した為、ご相談させていただきたく、宜しくお願い致します。 [root@fedora test]# /usr/bin/ruby -v ruby 1.8.7 (2011-02-18 patchlevel 334) [i386-linux] [root@fedora test]# cat qaz.rb #! /usr/bin/ruby -KU require 'time' a="2011-04-15 10:52:51.004956" b="2011-04-15 10:52:50.998658" print("#{Time.parse(a)-Time.parse(b)}\n") a="2011-04-15 10:52:48.977298" b="2011-04-15 10:52:48.970890" print("#{Time.parse(a)-Time.parse(b)}\n") [root@fedora test]# ./qaz.rb 0.00629800000000004 0.006408 [root@fedora test]# と、小数点以下6桁の情報を持つ時刻情報の差分を計算したら、何故か 一つ目の方では 0.00629800000000004 と 00000000004 が余計にくっついて出力されました。 to_fをしてみると [root@fedora test]# cat qaz.rb #! /usr/bin/ruby -KU require 'time' a="2011-04-15 10:52:51.004956" b="2011-04-15 10:52:50.998658" print("#{Time.parse(a).to_f-Time.parse(b).to_f}\n") a="2011-04-15 10:52:48.977298" b="2011-04-15 10:52:48.970890" print("#{Time.parse(a).to_f-Time.parse(b).to_f}\n") [root@fedora test]# ./qaz.rb 0.00629806518554688 0.0064079761505127 [root@fedora test]# と、これまた不思議なほど桁数が増えて出力されてしまうのですが。。。 パターンをイロイロ試したわけではないのですが、とあるログの時刻情報の差分を 大量に計算していたところto_fをしなかったときに390個中1個だけ 上記のように余計な桁が出力されました。 何が悪いのかよく分からないのですが、小数点以下6桁の引き算なので、 そのまま小数点以下6桁(以内)の答えが欲しいのですが、どのようにしたら良いか ご助言いただけませんでしょうか。 -- かさはら みつお