編集: サブ秒が浮動小数点数ではなく整数として表されることが timev.h に表示されますか?
IEEE 754 浮動小数点値の実装に関連する丸め誤差を知っていたとしても、これには非常に驚いています。
Time.utc(1970,1,1,0,0,12.860).strftime("%H:%M:%S,%L") # => "00:00:12,859"
通常、コンマの後の 8 桁目または 10 桁目で精度エラーが報告されますが、その理由はよくわかります。しかし、この場合、私の値の最後の有効桁数が影響を受け、他のよく知られている精度のケースよりも重大なエラーのように見えます。さらに、これは Time クラスの一部であり、プログラムで修正する方法がわかりません。報告されたその他の丸めフロート エラーは、別のクラスを使用することで修正される場合がありますが、この場合、使用する興味深いクラスは見当たりません。
私の環境:
phil@eldiablo ~ % uname -a 11-02-2013 09:38:49
Linux eldiablo.loria.fr 3.5.0-23-generic #35-Ubuntu SMP Thu Jan 24 13:05:29 UTC 2013 i686 i686 i686 GNU/Linux
/home/phil
phil@eldiablo ~ % ruby -v 11-02-2013 09:38:51
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
編集: それで、これについての 2 つの質問: それはバグですか? Time クラスでそのような精度が必要な場合、この副作用をどのように処理しますか? アイデアや回避策はありますか?