From: "KISHIMOTO, Makoto" Date: 2016-12-24T22:18:33+09:00 Subject: [ruby-dev:49915] Integer の a.fdiv(b) と Rational(a, b).to_f で結果のFloatのLSBが違うことがある きしもとです FloatのLSBの違いなので、バグとは認められないような気もしますが、見つ けてしまったので、一応。 a と b が Integer として、a.fdiv(b) と Rational(a, b).to_f は、常に同じ 結果が期待されるものなのではないかと思いますが、手元の環境で、ごくごく 稀に、以下のようにLSBが一致しない場合があることを見つけました。 (参考までに、さらに別のルーチンによる計算は Rational(a, b).to_f の 方に一致しました) ======== # fdiv_rat_sample a = %w(94pj5hpub01oabeygoeje8hnmc94w8khhnqy4v46k3152gydr8bus25svhlwx3r dxoi9b850i47079g0ur0k0kyxhuqziskwgj3ikg73m419qfhp97uac7y4j2c4s1te9fr end4mnefls6lke3dtg8ei0ao).join.to_i 36 b = 1<<1074 p a.fdiv(b) p Rational(a, b).to_f ======== $ uname -a FreeBSD norikura.localdomain 10.3-RELEASE-p11 FreeBSD 10.3-RELEASE-p11 #0: Mon Oct 24 18:49:24 UTC 2016 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64 $ ruby23 -v ruby 2.3.1p112 (2016-04-26 revision 54768) [amd64-freebsd10] $ ruby23 fdiv_rat_sample.rb 2.1129010727564318e-83 2.112901072756432e-83