5
Ruby 2.4使用高斯舍入来四舍五入浮点数。浮点四舍五入变化2.4
根据维基百科:
需要仲裁的规则是较少偏见(甚至当原始数字是正或不等概率负)是圆的一半,甚至。按照这个约定,如果y的分数是0.5,那么q是最靠近y的偶数。因此,例如,+ 23.5变为+24,+ 24.5也如此。而-23.5变成-24,和-24.5一样。
但是,在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
有人可以解释为什么这样或我错过了什么?