C#中的四舍五入
2008-11-18 10:36
148 查看
IEEE754规定了如下的几种四舍五入的标准,分别举例说明其意义:
“away from zero” (中间值时,远离零,即取绝对值最大) 例:3.215 -> 3.22,-3.215 -> -3.22
“towards zero” (中间值时,接近零,即绝对值最小) 例:3.215 -> 3.21,-3.215 -> -3.21
“to even” (中间值时,接近相邻的偶数) 例:3.215 -> 3.22,3.245 -> 3.24
“towards positive infinity”(中间值时,向正无穷大方向接近) 例:3.215 -> 3.22,-3.215 -> -3.21
“towards negative infinity” (中间值时,向负无穷大方向接近) 例:3.215 -> 3.21,-3.215 -> -3.22
我们常规意义上的“四舍五入”是“away from zero”的方式。
在C#中,Math.Round (Decimal)采用的是四舍六入五成双,即 “to even” ,要想控制舍入类型,需要调用Math.Round(Decimal, MidpointRounding),其中MidpointRounding枚举只有两种,请参考:MSDN-MidpointRounding 枚举,其实MSDN中下面的解释的错的,真想不到,MS会出现这样的错误,误导的后果一定很严重。
参考资料:
IEEE754标准规定的五种四舍五入方法
MSDN-Math.Round 方法 (Decimal)
C#中的四舍五入函数及Math.Round勘误
“away from zero” (中间值时,远离零,即取绝对值最大) 例:3.215 -> 3.22,-3.215 -> -3.22
“towards zero” (中间值时,接近零,即绝对值最小) 例:3.215 -> 3.21,-3.215 -> -3.21
“to even” (中间值时,接近相邻的偶数) 例:3.215 -> 3.22,3.245 -> 3.24
“towards positive infinity”(中间值时,向正无穷大方向接近) 例:3.215 -> 3.22,-3.215 -> -3.21
“towards negative infinity” (中间值时,向负无穷大方向接近) 例:3.215 -> 3.21,-3.215 -> -3.22
我们常规意义上的“四舍五入”是“away from zero”的方式。
在C#中,Math.Round (Decimal)采用的是四舍六入五成双,即 “to even” ,要想控制舍入类型,需要调用Math.Round(Decimal, MidpointRounding),其中MidpointRounding枚举只有两种,请参考:MSDN-MidpointRounding 枚举,其实MSDN中下面的解释的错的,真想不到,MS会出现这样的错误,误导的后果一定很严重。
AwayFromZero | 当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。 |
IEEE754标准规定的五种四舍五入方法
MSDN-Math.Round 方法 (Decimal)
C#中的四舍五入函数及Math.Round勘误
相关文章推荐
- c# 简单又好用的四舍五入方法
- C#中小数点后保留两位小数,四舍五入的函数及使用方法
- C# 正数四舍五入方法
- c# 三种取整方法 向上取整 向下取整 四舍五入
- c# 三种取整方法 向上取整 向下取整 四舍五入
- C# 四舍五入的理解
- C# 四舍五入算法 ,进位,舍去
- c#四舍五入运算代码
- C#正则匹配(提取字符串中的数字)及C#“四舍五入”
- C#处理四舍五入的问题
- C# 四舍五入 进一法 直接取整 带小数位数
- C#优化字符串操作(4)--保留2位有效小数及四舍五入
- C#中Math.Round()实现中国式四舍五入
- C#使用Math.Round()四舍五入
- c# 四舍五入
- C#中对于一个小数进行四舍五入
- 使Decimal类型数据保留N位小数且不进行四舍五入操作(C#)
- c# 的四舍五入
- c#Math.Round最準確的四舍五入
- C#.NET常见问题(FAQ)-浮点数如何四舍五入