0
点赞
收藏
分享

微信扫一扫

C#中格式化小数位数为指定位数的工具类


场景

C#中怎样格式化小数位数为指定位数的工具类。

注:

实现

首先新建工具类DataProcessor,然后在工具类下新建方法FormatFloatValue

/// <summary>
/// 格式化小数位数
/// </summary>
/// <param name="floatValue">要格式化的小数对象</param>
/// <param name="maxPrecision">保留的最大小数位数</param>
/// <returns>返回格式化后的小数字符串值</returns>
public static object FormatFloatValue(object floatValue, int maxPrecision)
{
if (IsNullOrEmpty(floatValue))
{
return String.Empty;
}
else
{
int intPrecision = GetValidPrecision(floatValue, maxPrecision);
return String.Format("{0:f" + intPrecision + "}", floatValue);
}
}

其中用到了获取浮点数值的有效小数位数的方法GetValidPrecision

/// <summary>
/// 获取浮点数值的有效小数位数
/// </summary>
/// <param name="value">浮点数值</param>
/// <param name="maxPrecision">允许返回的最大小数位数</param>
/// <returns>返回有效小数位数</returns>
public static int GetValidPrecision(object value, int maxPrecision)
{
if (DataProcessor.IsNullOrEmpty(value))
{
return 0;
}
else
{
if (value.ToString().IndexOf(".") == -1)
{
return 0;
}
else
{
string strValue = value.ToString();
string precision = strValue.Substring(strValue.IndexOf(".") + 1);
int cnt = 0; //保存末尾0的个数
for (int i = precision.Length - 1; i > 0; i--)
{
if (precision.ToCharArray()[i] == '0')
{
cnt++;
}
else
{
break;
}
}
int result = precision.Length - cnt; //为有效小数位数
if (result > maxPrecision)
{
return maxPrecision;
}
else
{
return result;
}
}
}
}

这其中又用到了判空的方法IsNullOrEmpty

/// <summary>
/// 判断是否为空
/// </summary>
/// <param name="value">要判断的对象</param>
/// <returns>为空返回true,否则返回false</returns>
public static bool IsNullOrEmpty(object value)
{
if (value == null || value == DBNull.Value || string.IsNullOrWhiteSpace(value.ToString()))
{
return true;
}
return false;
}

调用示例

object value = DataProcessor.FormatFloatValue(obj, 3);

表示要将小数格式为3为小数位数。

效果

格式化前

C#中格式化小数位数为指定位数的工具类_工具类

 

格式化后

C#中格式化小数位数为指定位数的工具类_C#_02

 

举报

相关推荐

0 条评论