C#中Math.Round()实现中国式四舍五入
来源:互联网 发布:linux mysql登录命令 编辑:程序博客网 时间:2024/04/30 11:23
C#中Math.Round()实现中国式四舍五入
C#中的Math.Round()并不是使用的"四舍五入"法。其实在VB、VBScript、C#、J#、T-SQL中Round函数都是采用Banker's rounding(银行家算法),即:四舍六入五取偶。事实上这也是IEEE的规范,因此所有符合IEEE标准的语言都应该采用这样的算法。
.NET 2.0 开始,Math.Round 方法提供了一个枚举选项 MidpointRounding.AwayFromZero 可以用来实现传统意义上的"四舍五入"。即: Math.Round(4.5, MidpointRounding.AwayFromZero) = 5。
Round(Decimal)Round(Double)Round(Decimal, Int32)Round(Decimal, MidpointRounding)Round(Double, Int32)Round(Double, MidpointRounding)Round(Decimal, Int32, MidpointRounding)Round(Double, Int32, MidpointRounding)
如:
Math.Round(0.4) //result:0
Math.Round(0.6)//result:1
Math.Round(0.5)//result:0
Math.Round(1.5) //result:2
Math.Round(2.5)//result:2
Math.Round(3.5)//result:4
Math.Round(4.5)//result:4
Math.Round(5.5)//result:6
Math.Round(6.5)//result:6
Math.Round(7.5)//result:8
Math.Round(8.5)//result:8
Math.Round(9.5)//result:10
使用MidpointRounding.AwayFromZero重载后对比:
Math.Round(0.4, MidpointRounding.AwayFromZero); // result:0
Math.Round(0.6, MidpointRounding.AwayFromZero); // result:1
Math.Round(0.5, MidpointRounding.AwayFromZero); // result:1
Math.Round(1.5, MidpointRounding.AwayFromZero); // result:2
Math.Round(2.5, MidpointRounding.AwayFromZero); // result:3
Math.Round(3.5, MidpointRounding.AwayFromZero); // result:4
Math.Round(4.5, MidpointRounding.AwayFromZero); // result:5
Math.Round(5.5, MidpointRounding.AwayFromZero); // result:6
Math.Round(6.5, MidpointRounding.AwayFromZero); // result:7
Math.Round(7.5, MidpointRounding.AwayFromZero); // result:8
Math.Round(8.5, MidpointRounding.AwayFromZero); // result:9
Math.Round(9.5, MidpointRounding.AwayFromZero); // result:10
但是悲剧的是,如果用这个计算小数的话,就不灵了!!!
必须用第七个重载方法,
decimal Round(decimal d, int decimals, MidpointRounding mode)
这样计算出来的小数才是真正的中国式四舍五入!!
?Math.Round(526.925, 2)526.92?Math.Round(526.925, 2,MidpointRounding.AwayFromZero)526.92?Math.Round((decimal)526.925, 2)526.92?Math.Round((decimal)526.925, 2,MidpointRounding.AwayFromZero)526.93
- C#中Math.Round()实现中国式四舍五入
- C#中Math.Round()实现中国式四舍五入
- C#中Math.Round()实现中国式四舍五入
- C#中Math.Round()实现中国式四舍五入
- C#中Math.Round()实现中国式四舍五入
- C#中Math.Round()实现中国式四舍五入
- C#中Math.Round()实现中国式四舍五入
- C#中Math.Round()实现中国式四舍五入
- C#中Math.Round四舍五入的用法详解,
- .Net中Math.Round与四舍五入
- Math.Round 四舍五入函数
- Math.round四舍五入
- C#关于中国式的四舍五入
- 马士兵Java课堂笔记-4-Math.round()函数-强制转换中可以实现四舍五入
- C#中的Math.Round使用的"四舍五入"法
- .Net中Math.Round与四舍五入(转载)
- Math.Round 不同的四舍五入
- Math.round()的四舍五入问题
- Linux 进程的 Uninterruptible sleep(D) 状态
- java内存溢出示例(堆溢出、栈溢出)
- jsp网站需要更新的几点问题总结
- 类与结构
- Google物联网:AndroidThings、Nest、Weave
- C#中Math.Round()实现中国式四舍五入
- C/C++的mem函数和strcpy函数的区别和应用
- 【安卓开发-2】第一次实现Activity的跳转、Activity生命周期、3种正向传值、反向传值
- 页面换肤实例
- 高德地图定位偏移以及经纬度之间的转换
- Android Studio 科大讯飞语音合成接口 整合教程
- Rxjava学习博客推荐
- 源码分析-SynchronousQueue
- 学习篇--数据结构伪代码