2011年5月 9日

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

2011年5月9日10:29 Mitsuo KASAHARA <m.kasahara13@xxxxx>:

> と、小数点以下6桁の情報を持つ時刻情報の差分を計算したら、何故か
> 一つ目の方では
> 0.00629800000000004
> と
> 00000000004
> が余計にくっついて出力されました。


以下のようにしたほうがいいかも知れませんね。

% svn diff --diff-cmd diff -x '-u -p' time.c
Index: time.c
===================================================================
--- time.c (revision 31489)
+++ time.c (working copy)
@@ -1394,7 +1394,7 @@ time_minus(time1, time2)

GetTimeval(time2, tobj2);
f = (double)tobj->tv.tv_sec - (double)tobj2->tv.tv_sec;
- f += ((double)tobj->tv.tv_usec - (double)tobj2->tv.tv_usec)*1e-6;
+ f = (f*1e6 + (double)tobj->tv.tv_usec - (double)tobj2->tv.tv_usec)*1e-6;
/* XXX: should check float overflow on 64bit time_t platforms */

return rb_float_new(f);

> [root@xxxxx test]# ./qaz.rb
> 0.00629806518554688
> 0.0064079761505127
> [root@xxxxx test]#
> と、これまた不思議なほど桁数が増えて出力されてしまうのですが。。。

桁落ちというものでは。
--
[田中 哲][たなか あきら][Tanaka Akira]


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




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