C# 实现真正的四舍五入

        /// <summary>
        /// 实现数据的四舍五入法
        /// </summary>
        /// <param name="v">要进行处理的数据</param>
        /// <param name="x">保留的小数位数</param>
        /// <returns>四舍五入后的结果</returns>
        private double ChinaRound(double v, int x)
        {
            bool isNegative = false;
            //如果是负数
            if (v < 0)
            {
                isNegative = true;
                v = -v;
            }
            try
            {
                  string five= v.ToString().Substring(v.ToString().IndexOf('.')+x+1,1);
                  if (five == "5")
                  {
                      int num = Convert.ToInt32(v.ToString().Substring(v.ToString().IndexOf('.') + x, 1));
                      if (num % 2 == 0)
                      {                        
                        v= Convert.ToDouble(v.ToString().Substring(0,v.ToString().IndexOf('.') + x+1));
                        v = Math.Round(v + Math.Pow(0.1, x),x);                        
                      }
                      else
                          v = Math.Round(v, x);
                  }
                  else
                      v = Math.Round(v, x);
            }
            catch (Exception)
            {
                v = Math.Round(v, x);
            } 
         
            if (isNegative)
            {
                v = -v;
            }

            return v;
        }
发布了45 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sinat_32857543/article/details/92830097