2011年5月 9日

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

笠原ともうします。

小数点付きの時刻情報を Time#parse で時間差を計算していたところ、間欠で
微妙な出力が発生した為、ご相談させていただきたく、宜しくお願い致します。

[root@xxxxx test]# /usr/bin/ruby -v
ruby 1.8.7 (2011-02-18 patchlevel 334) [i386-linux]
[root@xxxxx 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@xxxxx test]# ./qaz.rb
0.00629800000000004
0.006408
[root@xxxxx test]#

と、小数点以下6桁の情報を持つ時刻情報の差分を計算したら、何故か
一つ目の方では
0.00629800000000004

00000000004
が余計にくっついて出力されました。

to_fをしてみると
[root@xxxxx 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@xxxxx test]# ./qaz.rb
0.00629806518554688
0.0064079761505127
[root@xxxxx test]#
と、これまた不思議なほど桁数が増えて出力されてしまうのですが。。。

パターンをイロイロ試したわけではないのですが、とあるログの時刻情報の差分を
大量に計算していたところto_fをしなかったときに390個中1個だけ
上記のように余計な桁が出力されました。

何が悪いのかよく分からないのですが、小数点以下6桁の引き算なので、
そのまま小数点以下6桁(以内)の答えが欲しいのですが、どのようにしたら良いか
ご助言いただけませんでしょうか。

--
かさはら みつお <m.kasahara13@xxxxx>


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




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