在C#中,结果Math.Round(2.5)为2.
应该是3,不是吗?为什么它是2而不是C#?
.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();
Run Code Online (Sandbox Code Playgroud)
此代码输出以下内容:
Pos:0.5 Rnd:0 Neg:-0.5 Rnd:0
这似乎是一个明显的错误.有一个已知的工作吗?我在Core2处理器和i7上测试了这个,所以它似乎不是硬件.而Reflector只是说decimal.round函数最终调用系统调用.
让我知道是否有其他人看到这个.