5
Ruby 2.4では、浮動小数点数を丸めるためにガウスの丸めを使用しています。ウィキペディアによればRubyにおける浮動小数点丸めの変化2.4
:
(元の番号が等しくない確率で正または負であっても)少ないバイアスさタイブレーク規則はさえに半円形です。この規約では、yの割合が0.5の場合、qはyに最も近い偶数の整数です。従って、例えば、+ 23.5は+24.5、+ 24.5は+24、 -23.5は-24.5と同様-24になります。
ただし、次のコードをRuby 2.4で実行すると、予想外の出力が生成されます。
[1.5, 2.5, 3.5, 4.5, 5.5].each { | num | puts num.round }
# output:
2
3
4
5
6
# expected output(based on Gaussian rounding):
2
2
4
4
6
これがそうか、私が何をしないのです、なぜ誰かが説明できますか?