From: Tanaka Akira Date: 2011-05-09T12:55:51+09:00 Subject: [ruby-list:48068] Re: 小数点つき時刻情報とTime#parse 2011年5月9日10:29 Mitsuo KASAHARA : > と、小数点以下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@fedora test]# ./qaz.rb > 0.00629806518554688 > 0.0064079761505127 > [root@fedora test]# > と、これまた不思議なほど桁数が増えて出力されてしまうのですが。。。 桁落ちというものでは。 -- [田中 哲][たなか あきら][Tanaka Akira]