10

可能重复:
在 C# 中:Math.Round(2.5) 结果是 2(而不是 3)!你在开玩笑吧?

.Net 3.5 SP1 的 Math.Round 函数似乎将 0.5 舍入为零,而将 1.5 舍入为 2.0。我已经用十进制数字和以下代码对此进行了测试:

decimal pos = 0.5m;
decimal neg = -0.5m;

Console.WriteLine("Pos: {0} Rnd: {1}", pos, Math.Round(pos));
Console.WriteLine("Neg: {0} Rnd: {1}", neg, Math.Round(neg));

Console.ReadKey();

此代码输出以下内容:

Pos: 0.5 Rnd: 0 Neg: -0.5 Rnd: 0

这似乎是一个明显的错误。有没有已知的工作?我已经在 Core2 处理器和 i7 上对此进行了测试,所以它似乎不是硬件。而Reflector只是说decimal.round函数最终调用了一个系统调用。

让我知道是否有其他人看到这个。

4

0 回答 0