编辑:它出现在 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]
编辑:所以,关于这个有两个问题:这是否是一个错误?如果我需要 Time 类的精确度,如何处理这种副作用?任何想法或解决方法?