对小数的自定义位数进行四舍五入

原理:假设取3位小数

1、2.44444

2、得到0.00055

3、1+2=2.44500

4、得到2.445

 /// <summary>

        /// 计算double值四舍五入的方法

        /// </summary>

        /// <param name="dbl">进行四舍五入的数值</param>

        /// <param name="i">保留的小数位</param>

        /// <returns>返回四舍五入后的double值</returns>

        internal double Round(double dbl, int i)

        {

            string P_str_dbl = dbl.ToString();//将double数值转换为字符串

            string P_str_lower = //将double数值小数位转换为字符串

                P_str_dbl.Split('.')[1];

            int P_str_length = P_str_lower.Length;//计算double数值小数位长度

            dbl += GetValue(i, P_str_length);//开始进行四舍五入运算

            P_str_dbl = dbl.ToString();//将运算后的值转换为字符串

            if (P_str_dbl.Contains("."))//判断是否存在小数位

            {

                string P_str_upper = //得到整数位字符串

                    P_str_dbl.Split('.')[0];

                P_str_lower = P_str_dbl.Split('.')[1];//得到小数位字符串

                if (P_str_lower.Length > i)//判断数值位数是否大于保留小数位数

                {

                    P_str_lower = P_str_lower.Substring(//截取保留的小数位

                        0, i);

                    return double.Parse(//返回double数值

                        P_str_upper + "." + P_str_lower);

                }

                else

                {

                    return double.Parse(P_str_dbl);//如数值位数小于保留小数位数则直接返回

                }

            }

            else

            {

                return double.Parse(P_str_dbl);//如果没有小数位则直接返回值

            }

        }



        /// <summary>

        /// 得到小数数值的方法

        /// </summary>

        /// <param name="int_null">四舍五入保留的位数</param>

        /// <param name="length">四舍五入丢失的位数</param>

        /// <returns>返回小数值用于四舍五入计算</returns>

        internal double GetValue(int int_null, int length)

        {

            string P_str_dbl = "0.";//定义字符串变量并赋值

            for (int i = 0; i < length; i++)//使用for循环添加小数位

            {

                if (i > int_null - 1)

                {

                    P_str_dbl += "5";//向小数的四舍五入部分加5

                }

                else

                {

                    P_str_dbl += "0";//向小数的保留部分加0

                }

            }

            return double.Parse(P_str_dbl);//返回小数数值

        }

 

你可能感兴趣的:(四舍五入)