.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函数最终调用了一个系统调用。
让我知道是否有其他人看到这个。