2012年5月18日星期五

C# 不要自动四舍五入!

C# 不要自动四舍五入!

string v = string.Format("{0:F2}",123.525);

执行以上代码得到 "123.43",四舍五入了!

int v = (int)123.525; 得到 124 ,又四舍五入了!

有时候往往不需要四舍五入的。

        /// <summary>        /// 双精度数转换,忽略自动四舍五入        /// </summary>        /// <param name="p_value">待转换的双精度值</param>        /// <param name="p_digits">小数位数</param>        /// <returns></returns>        public static double MathNoRound(double p_value, uint p_digits)        {            double d = Math.Pow(10, p_digits);            if (p_digits == 0)                return p_value > 0 ? Math.Floor(p_value) : Math.Ceiling(p_value);            return p_value > 0 ? Math.Floor(p_value * d) / d : Math.Ceiling(p_value * d) / d;        }

TAG: