zoukankan      html  css  js  c++  java
  • 对小数的自定义位数进行四舍五入

    原理:假设取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);//返回小数数值
            }
  • 相关阅读:
    差分约束
    POJ 2449 Remmarguts' Date[k短路]
    K短路
    hdu4034 Graph(floyd)
    hdu2089不要62(数位dp)
    POJ3468 A Simple Problem with Integers ( 线段树)
    POJ3255:Roadblocks(次短路 SPFA+A星)
    usaco2.1Ordered Fractions( 枚举, 数学)
    hdu1565方格取数(1) (状态压缩dp)
    poj3259 Wormholes(spfa)
  • 原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3549792.html
Copyright © 2011-2022 走看看