MSDN中,对方法 Math.Round 的描述有两处错误: 错误一:使用 Math.Round,你可以指定返回值精确到小数点后几位,但MSDN中表述为“有效数字”,混淆了概念。 错误二:参数 decimals 的范围为 0-15,而不是这里描述的0-28。
chuangen@126.com, 2008-6-28 11:17
附:
有效数字的概念
一般而言,对一个数据取其可靠位数的全部数字加上第一位可疑数字,就称为这个数据的有效数字。一个近似数据的有效位数是该数中有效数字的个数,指从该数左方第一个非零数字算起到最末一个数字(包括零)的个数,它不取决于小数点的位置。
MSDN for VS2005 中对 Math.Round的描述
Math.Round 方法 (Decimal, Int32, MidpointRounding)
注意:此方法在 .NET Framework 2.0 版中是新增的。
将小数值舍入到指定精度。一个参数,指定当一个值正好处于另两个数中间时如何舍入这个值。
public static decimal Round ( decimal d, int decimals, MidpointRounding mode )
参数
d
要舍入的小数。
decimals
返回值中的有效数字位数(精度)。
mode
d 在两个数字之间时如何舍入的规范。
返回值
精度等于 decimals,最接近 d 的数字。如果 d 是两个数字的中值,这两个数字一个为偶数,另一个为奇数,则 mode 确定返回两个数字中的哪一个。如果 d 的精度小于 decimals,则返回 d 而不做更改。
备注
decimals 参数指定返回值的有效小数位数,其范围在 0 到 28 之间。如果 decimals 为零,则返回一个整数。
此方法的行为遵循 IEEE 标准 754 的第 4 节。这种 mode 为 ToEven 时执行的舍入有时称为就近舍入或银行家舍入。