C# 四不舍五入算法
C# 四不舍五入算法C# Code:
/// <summary>
/// 四不舍五入算法
/// </summary>
/// <param name="value"></param>
/// <param name="point"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public static decimal? Round45(decimal value, int point)
{
if (value == 0) return 0;
var str = value.ToString();
var arr = str.Split('.');
if (arr.Length == 1) return value;//整数
//假设2位小数:0.12=>0.120,第3为补0
arr[1] = arr[1].PadRight(point + 1, '0');//尾部补0
//五入=>1.236(2)=>1.24
if (Int32.Parse(arr[1].Substring(point, 1)) >= 5)
{
return Math.Round((decimal)value, point, MidpointRounding.AwayFromZero);
}
else//四不舍
{
return Math.Round((decimal)value, point);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 四不舍五入算法
/// </summary>
/// <param name="value"></param>
/// <param name="point"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public static decimal? Round45(decimal value, int point)
{
if (value == 0) return 0;
var str = value.ToString();
var arr = str.Split('.');
if (arr.Length == 1) return value;//整数
//假设2位小数:0.12=>0.120,第3为补0
arr[1] = arr[1].PadRight(point + 1, '0');//尾部补0
//五入=>1.236(2)=>1.24
if (Int32.Parse(arr[1].Substring(point, 1)) >= 5)
{
return Math.Round((decimal)value, point, MidpointRounding.AwayFromZero);
}
else//四不舍
{
return Math.Round((decimal)value, point);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
测试案例:
C# Code:
var v1 = RoundTool.Round45(1.1m, 2);//1.1
var v2 = RoundTool.Round45(1.12m, 2);//1.12
var v3 = RoundTool.Round45(1.144m, 2);//1.14
var v4 = RoundTool.Round45(1.145m, 2);//1.15
var v5 = RoundTool.Round45(1.155m, 2);//1.16
var v6 = RoundTool.Round45(1.144m, 1);//1.1
var v7 = RoundTool.Round45(1.155m, 1);//1.2
var v8 = RoundTool.Round45(1.105m, 1);//1.1
var v9 = RoundTool.Round45(1.155m, 0);//1
var v10 = RoundTool.Round45(1.555m, 0);//2
var v11 = RoundTool.Round45(1.455m, 0);//1
var v12 = RoundTool.Round45(1m, 0);//1
var v13 = RoundTool.Round45(1m, 1);//1
//来源:C/S框架网 | www.csframework.com | QQ:23404761
var v1 = RoundTool.Round45(1.1m, 2);//1.1
var v2 = RoundTool.Round45(1.12m, 2);//1.12
var v3 = RoundTool.Round45(1.144m, 2);//1.14
var v4 = RoundTool.Round45(1.145m, 2);//1.15
var v5 = RoundTool.Round45(1.155m, 2);//1.16
var v6 = RoundTool.Round45(1.144m, 1);//1.1
var v7 = RoundTool.Round45(1.155m, 1);//1.2
var v8 = RoundTool.Round45(1.105m, 1);//1.1
var v9 = RoundTool.Round45(1.155m, 0);//1
var v10 = RoundTool.Round45(1.555m, 0);//2
var v11 = RoundTool.Round45(1.455m, 0);//1
var v12 = RoundTool.Round45(1m, 0);//1
var v13 = RoundTool.Round45(1m, 1);//1
//来源:C/S框架网 | www.csframework.com | QQ:23404761

参考文档:
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
