.Net Round Bug

时间:2009-05-11 06:11:13

标签: c# math rounding

  

可能重复:
  In C#: Math.Round(2.5) result is 2 (instead of 3)! Are you kidding me?

.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 负:-0.5 Rnd:0

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

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

0 个答案:

没有答案