C#中格式化小數位數為指定位數的工具類


場景

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為小數位數。

效果

格式化前

 

 

格式化后

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM