环境VS2005,VS2003没有测试。
msdn并没有详细的说明清楚,给了一个例子;
| Math.Round (Decimal, Int32) |
将小数值舍入到指定精度。 由 .NET Compact Framework 支持。 |
|
Math.Round (Double, Int32) |
将双精度浮点值舍入到指定精度。 由 .NET Compact Framework 支持。 |
msdn并没有详细的说明清楚,给了一个例子;
Math.Round(3.44, 1); //Returns 3.4. Math.Round(3.45, 1); //Returns 3.4. Math.Round(3.46, 1); //Returns 3.5.
依照他的例子得到的是"五舍六入",我改变了一下数字得到的结果将完全改变。
Math.Round(3.445, 1); //Returns 3.4.
Math.Round(3.455, 1); //Returns 3.5.
Math.Round(3.465, 1); //Returns 3.5.
Math.Round(3.450, 1); //Returns 3.4.(补0是无效的)
Math.Round(3.4452, 2); //Returns 3.45.
Math.Round(3.4552, 2); //Returns 3.46.
Math.Round(3.4652, 2); //Returns 3.47.
非常奇怪当你需要获得小数点后面一位时,第一位参数必需要比你需要的位数多出两位数时才是正常的“四舍五入”,否则将是“五舍六入”,看来只能自已写四舍五入的算法,不能依赖Math.Round,否则我无法知道他何时使用四舍还是五舍,除非你定死你的第一位参数的位数。
http://www.cnblogs.com/bookworm/archive/2006/08/03/466866.html
本文探讨了在VS2005环境下Math.Round方法的行为特点,发现其在不同情况下表现出五舍六入和四舍五入两种不同的舍入规则。通过对比不同参数下的结果,指出在特定需求下可能需要自定义舍入算法。
1万+

被折叠的 条评论
为什么被折叠?



