場景
C#中怎樣格式化小數位數為指定位數的工具類。
注:
博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載
實現
首先新建工具類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為小數位數。
效果
格式化前
格式化后