• 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为小数位数。

    效果

    格式化前

    格式化后

  • 相关阅读:
    空指针的问题,感觉自己很傻
    在运行微服务架构的时候报错error creating bean h name 'advisor'.. Unsatisfied dependency..constructor argument with index 0...
    hibernate+oracle+主键varchar2类型,增加序列策略注解失败
    hibernate的报错异常
    7777端口的问题
    soapUI模拟发送json数据时,遇到的中文编码问题
    三、数组的使用
    四、内存中的数组
    一、初步认识数组
    二、数组的初始化
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/13048663.html
Copyright © 2020-2023  润新知