C# 四不舍五入算法
作者:C/S框架网|www.csframewo  发布日期:2023/05/31 15:00:12
  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



测试案例:


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





C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇