为什么float的Rounding使用四舍五入?

Why float's Rounding use round-to-even?

csapp 说:

“在大多数现实生活中,向偶数四舍五入可以避免这种统计偏差。 它会在大约 50% 的时间内向上舍入,在大约 50% 的时间内向下舍入。"

如何证明?

最接近的舍入结果明显向下舍入。最近的四舍五入显然有一个偏差四舍五入的结果。如果您四舍五入最接近偶数,则有一半时间向上舍入,一半时间向下舍入。所以偏见消失了。 (对于加法和减法很重要,对于乘法,这种情况很少出现,而对于除法或平方根,则根本不会发生)。

最接近偶数的圆还有其他优点。取 x+y 不溢出的任何 x, y。让 x' = (x + y) - y。由于舍入误差,x' 不一定与 x 相同。但是让 x'' = (x' + y) - y,你会得到 x'' = x'。对于最近向下或向上的圆形,如果您重复此操作,结果可能会慢慢向下或向上移动。