C#的四舍五入【简洁+实例验证版】
2008-11-24 22:47
211 查看
C# 中没有四舍五入函数,事实上我知道的程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法
Banker 's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的
Math.Round 方法默认的也是 Banker 舍入法
在 .NET 2.0 中 Math.Round 方法有几个重载方法
Math.Round(Decimal, MidpointRounding)
Math.Round(Double, MidpointRounding)
Math.Round(Decimal, Int32, MidpointRounding)
Math.Round(Double, Int32, MidpointRounding)
Decimal,Double是要进行四舍五入的小数
Int32是精确度,0~15,将小数值舍入到指定精度。
MidpointRounding 参数,指定当一个值正好处于另两个数中间时如何舍入这个值
该参数是个 MidpointRounding 枚举
AwayFromZero 当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。
ToEven 当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。
网上有一堆自己的改造的四舍五入的写法,貌似微软已经有标准的支持了,特验证了下,应该没有问题吧??
Console.WriteLine("3.44: {0}", Math.Round(3.44, 1, MidpointRounding.AwayFromZero)); //Returns 3.4. 四舍
Console.WriteLine("3.451: {0}", Math.Round(3.451, 1, MidpointRounding.AwayFromZero)); //Returns 3.5
Console.WriteLine("3.45: {0}", Math.Round(3.45, 1, MidpointRounding.AwayFromZero)); //Returns 3.5.
Console.WriteLine("3.75: {0}", Math.Round(3.75, 1, MidpointRounding.AwayFromZero)); //Returns 3.8
Console.WriteLine("3.46: {0}", Math.Round(3.46, 1, MidpointRounding.AwayFromZero)); //Returns 3.5. 六入
参考文章http://blog.163.com/chenrunfeng@126/blog/static/2420452720088170475045/
Banker 's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的
Math.Round 方法默认的也是 Banker 舍入法
在 .NET 2.0 中 Math.Round 方法有几个重载方法
Math.Round(Decimal, MidpointRounding)
Math.Round(Double, MidpointRounding)
Math.Round(Decimal, Int32, MidpointRounding)
Math.Round(Double, Int32, MidpointRounding)
Decimal,Double是要进行四舍五入的小数
Int32是精确度,0~15,将小数值舍入到指定精度。
MidpointRounding 参数,指定当一个值正好处于另两个数中间时如何舍入这个值
该参数是个 MidpointRounding 枚举
AwayFromZero 当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较小的值。
ToEven 当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。
网上有一堆自己的改造的四舍五入的写法,貌似微软已经有标准的支持了,特验证了下,应该没有问题吧??
Console.WriteLine("3.44: {0}", Math.Round(3.44, 1, MidpointRounding.AwayFromZero)); //Returns 3.4. 四舍
Console.WriteLine("3.451: {0}", Math.Round(3.451, 1, MidpointRounding.AwayFromZero)); //Returns 3.5
Console.WriteLine("3.45: {0}", Math.Round(3.45, 1, MidpointRounding.AwayFromZero)); //Returns 3.5.
Console.WriteLine("3.75: {0}", Math.Round(3.75, 1, MidpointRounding.AwayFromZero)); //Returns 3.8
Console.WriteLine("3.46: {0}", Math.Round(3.46, 1, MidpointRounding.AwayFromZero)); //Returns 3.5. 六入
参考文章http://blog.163.com/chenrunfeng@126/blog/static/2420452720088170475045/
相关文章推荐
- C#实现的简单验证码识别实例
- C#验证身份证号码正确性的实例代码(收藏)
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- 使用C#的正则表达式验证中文字符(实例代码)
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
- C# WCF简单实例 出错:调用方未由服务进行身份验证
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
- C#四舍五入用法实例
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
- C# 开发(创蓝253)手机短信验证码接口的实例
- C#四舍五入(函数)用法实例
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
- 关于C#.net winform程序验证moss的集成身份认证实例
- C#实现的简单验证码识别实例
- 使用C#的正则表达式验证中文字符(实例代码)
- Oracle 远程访问配置 在 Windows Forms 和 WPF 应用中使用 FontAwesome 图标 C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素” C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作
- c# 域操作实例 AD身份验证
- C#与Java的MD5简单验证(实例代码)
- 正则表达式验证输入是否全中文 C#