![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/// <summary>
/// 格式化数字
/// </summary>
/// <param name="input">输入的数字</param>
/// <param name="len">小数点保留位数(四舍五入)</param>
/// <param name="bsep">是否千分符显示</param>
/// <param name="separator">千分符号,默认为逗号(,)</param>
/// <returns>格式化后的数字</returns>
public static string FormatNumber(string input, int len, bool bsep, string separator)
{
string[] nums = input.Split('.');
string num1 = "";
string num2 = "";
if (bsep && separator.Length == 0)
{
separator = ",";
}
if (bsep)
{
num1 = Regex.Replace(nums[0], @"(?<!-|^)(\d{3})", separator +"$1", RegexOptions.RightToLeft);
}
else
{
num1 = nums[0];
}
if (nums.Length == 2)
{
num2 = GetDecimal(nums[1], len);
}
if (num2.Length > 0)
{
if (len > 0)
{
return num1 + "." + num2;
}
else if (Regex.IsMatch(num2,"[5-9]"))
{
num1 = (Convert.ToInt32(nums[0]) + 1).ToString();
if (bsep)
{
num1 = Regex.Replace(num1, @"(?<!-|^)(\d{3})", separator + "$1", RegexOptions.RightToLeft);
}
return num1;
}
return num1;
}
return num1;
}
/// <summary>
/// 获得小数
/// </summary>
/// <param name="input">输入的小数</param>
/// <param name="len">小数保留的位数</param>
/// <returns>格式化后的小数</returns>
public static string GetDecimal(string input, int len)
{
if (len < 0)
{
len = 0;
}
if (input.Length <= len)
{
return input.PadRight(len, '0');
}
if (len > 0 && Regex.IsMatch(input[len].ToString(), "[5-9]"))
{
return (Convert.ToInt32(input.Substring(0, len)) + 1).ToString().PadLeft(len,'0');
}
if (len == 0)
{
return input.Substring(0, 1);
}
return input.Substring(0, len);
}