Math.Round是四舍五入还是五舍六入
2010-10-15 16:27
1046 查看
在开发中发现一个以前未注意到的问题,
以前一直以为Math.Round是按四舍五入的原则处理的(从小到大中国的教育课程就是这样,至少我是这样看到的),
没想到时代在变化,国际形式日新月异(老外实在是有才)。
居然发现还有一个五舍六入的原则,下面是Math.Round的方法总结:
Math.Round(16.425,2) = 16.42
Math.Round(16.425,2,MidpointRounding.ToEven) = 16.42
Math.Round(16.425,2,MidpointRounding.AwayFromZero) = 16.43
下面来试一下double的方法:
Math.Round(0.145, 2, MidpointRounding.AwayFromZero) = 0.14
Math.Round(0.145, 2, MidpointRounding.ToEven) = 0.14
下面来试一下decimal的方法:
Math.Round((decimal)0.145, 2, MidpointRounding.AwayFromZero) = 0.15
Math.Round((decimal)0.145, 2, MidpointRounding.ToEven) = 0.14
MidpointRounding的枚举介绍(MSDN)。
ToEven
当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。(可以解释为Banker's rounding(银行家舍入)算法,即四舍六入五取偶,是IEEE规定的舍入标准。)
AwayFromZero
当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。
在默认情况下都是使用ToEven
以前一直以为Math.Round是按四舍五入的原则处理的(从小到大中国的教育课程就是这样,至少我是这样看到的),
没想到时代在变化,国际形式日新月异(老外实在是有才)。
居然发现还有一个五舍六入的原则,下面是Math.Round的方法总结:
Math.Round(16.425,2) = 16.42
Math.Round(16.425,2,MidpointRounding.ToEven) = 16.42
Math.Round(16.425,2,MidpointRounding.AwayFromZero) = 16.43
下面来试一下double的方法:
Math.Round(0.145, 2, MidpointRounding.AwayFromZero) = 0.14
Math.Round(0.145, 2, MidpointRounding.ToEven) = 0.14
下面来试一下decimal的方法:
Math.Round((decimal)0.145, 2, MidpointRounding.AwayFromZero) = 0.15
Math.Round((decimal)0.145, 2, MidpointRounding.ToEven) = 0.14
MidpointRounding的枚举介绍(MSDN)。
ToEven
当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。(可以解释为Banker's rounding(银行家舍入)算法,即四舍六入五取偶,是IEEE规定的舍入标准。)
AwayFromZero
当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。
在默认情况下都是使用ToEven
相关文章推荐
- Math.Round到底是"四舍五入"还是"五舍六入"
- Math.Round是四舍五入还是五舍六入
- Math.Round 之关于 不同的四舍五入
- Math.round四舍五入的理解
- .Net中Math.Round与四舍五入
- WinCE的C#编程,对float型进行四舍五入保留两位小数,小数进行四舍五入操作,Math.Round的应用案例。
- C# 中的四舍五入算法及 MSDN 2005 中文版 Math.Round 勘误
- C#中Math.Round()实现中国式四舍五入
- .Net中Math.Round与四舍五入(转载)
- Javascript四舍五入(Math.round()与Math.pow())
- C#中Math.Round()实现中国式四舍五入
- Math.Round到底是"四舍五入"还是"五舍六入" - 成长历程 - 博客园
- -0.5四舍五入过后等于多少?为什么?<Math.round()>
- C#中Math.Round()实现中国式四舍五入
- js的向上取整(Math.ceil)向下取整(Math.floor)四舍五入(Math.round)
- JavaSE8基础 Math.round 简单的四舍五入成整数
- C#中Math.Round()实现中国式四舍五入
- C#使用Math.Round()四舍五入
- c#Math.Round最準確的四舍五入
- Math.Round函数四舍五入的问题