不一致 Math.Floor 结果

Inconsistent Math.Floor results

我对 C# 中 Math.Floor 函数的结果感到有点困惑。

我通过以下调用得到了预期的 return 91:

Math.Floor(91.0);

但是如果我使用下面的调用,我会得到一个 returned 值 90,而在这种情况下我仍然期望 91。

Math.Floor(9.1/0.1);

这仅仅是因为小的舍入误差吗?有没有办法获得一致的结果?

是的,这个问题与精度有关,因为 Math.Floor() 根本不会在数学上四舍五入,而是总是向下取整。所以即使 90.9999999 仍然只产生 90.

为了准确舍入,请改用 Math.Round() 或将 0.5 添加到传递的值。