相关疑难解决方法(0)

为什么Math.Round(2.5)返回2而不是3?

在C#中,结果Math.Round(2.5)为2.

应该是3,不是吗?为什么它是2而不是C#?

.net rounding

388
推荐指数
7
解决办法
25万
查看次数

.Net Round Bug

可能重复:
在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();
Run Code Online (Sandbox Code Playgroud)

此代码输出以下内容:

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

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

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

c# math rounding

10
推荐指数
0
解决办法
2050
查看次数

标签 统计

rounding ×2

.net ×1

c# ×1

math ×1