求 c# 验证精度 有效位,比如,
我要4个有效位,精度3,
那么,689.555  ->   689.5
     2.98545  ->   2.985
有效位的重要性大于精度.即以有效位为主. 

解决方案 »

  1.   

    N次乘以10 取整,再N次除以10,N就是精度
      

  2.   

    #region 验证精度和有效位
            /// <summary>
            /// 验证精度和有效位
            /// </summary>
            /// <param name="value">原数字</param>
            /// <param name="ableSize">有效位</param>
            /// <param name="precision">精度</param>
            /// <returns></returns>
            public static double CheckValuePrecision(string inputdata, int ableSize, int precision)
            {
                int k = inputdata.IndexOf(".");
                string str1 = string.Empty;
                if (k > 0)
                {
                    str1 = inputdata.Substring(0, k);
                }
                else
                {
                    str1 = inputdata;
                }
                string str2 = inputdata.Substring(inputdata.IndexOf(".") + 1);            string factor = string.Empty;
                for (int i = 0; i < ableSize; i++)
                {
                    factor += "9";
                }            if (str1.Length > ableSize)
                {
                    return Convert.ToDouble(factor);
                }
                else if (str1.Length == ableSize)
                {
                    return Convert.ToDouble(str1);
                }
                else
                {
                    int cutLength = 0;
                    if (str1 == "0")
                    {
                        cutLength = ableSize;
                    }
                    else
                    {
                        cutLength = ableSize - str1.Length;
                    }
                    if (str2.Length >= cutLength)
                    {
                        return Convert.ToDouble(str1 + "." + str2.Substring(0, cutLength));
                    }
                    else
                    {
                        return Convert.ToDouble(str1 + "." + str2);
                    }
                }
            }
            #endregion