c# – 为什么.NET Math.Round方法在处理负值时向下舍入为5而不向
我注意到,当我调用Math.Round并为其提供-0.375的十进制值并尝试将其四舍五入到两位小数时,它会将值四舍五入为-0.38.我总是被教导,5或更大的意思是向上舍入,这意味着它应该是-0.37.舍入到-0.37是
Javascript如何做到这一点,这就是我发现这个问题的方法.
这是一些示例代码. decimal negNumber = -0.375m; var resultToEven = Math.Round(negNumber,2,MidpointRounding.ToEven); var resultAwayFromZero = Math.Round(negNumber,MidpointRounding.AwayFromZero); Console.WriteLine("Original Number: " + negNumber); Console.WriteLine("ToEven: " + resultToEven); Console.WriteLine("Away from zero: " + resultAwayFromZero); 这是它输出的内容.
我使用的是.NET 4.0. 解决方法
Math.Round中的默认行为是使用
MidpointRounding.ToEven,它向“最接近的偶数”舍入.
MSDN describes why this was chosen:
您的第二个电话使用AwayFromZero,它明确地舍入:
在您的情况下,-0.38比0.0更远离-0.37. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |