1. 程式人生 > >c# 小數四捨五入,向上取整,向下取整,見角進元保留多個小數位數

c# 小數四捨五入,向上取整,向下取整,見角進元保留多個小數位數

/// <summary>
        /// 實現資料的四捨五入法
        /// </summary>
        /// <param name="v">要進行處理的資料</param>
        /// <param name="x">保留的小數位數</param>
        /// <returns>四捨五入後的結果</returns>
        public decimal Round(decimal v, int x)
        {
            var isNegative = false
; //如果是負數 if (v < 0) { isNegative = true; v = -v; } var IValue = 1; for (var i = 1; i <= x; i++) { IValue = IValue * 10; } var Int = Math.Round(v * IValue, 0
); v = Int / IValue; if (isNegative) { v = -v; } return v; } /// <summary> /// 實現資料的向上取整 /// </summary> /// <param name="v">要進行處理的資料</param> /// <param name="x">
保留的小數位數</param> /// <returns>向上取整後的結果</returns> public decimal Ceiling(decimal v, int x) { var isNegative = false; //如果是負數 if (v < 0) { isNegative = true; v = -v; } var IValue = 1; for (var i = 1; i <= x; i++) { IValue = IValue * 10; } var Int = Math.Ceiling(v * IValue); v = Int / IValue; if (isNegative) { v = -v; } return v; } /// <summary> /// 實現資料的向下取整 /// </summary> /// <param name="v">要進行處理的資料</param> /// <param name="x">保留的小數位數</param> /// <returns>向下取整後的結果</returns> public decimal Floor(decimal v, int x) { var isNegative = false; //如果是負數 if (v < 0) { isNegative = true; v = -v; } var IValue = 1; for (var i = 1; i <= x; i++) { IValue = IValue * 10; } var Int = Math.Floor(v * IValue); v = Int / IValue; if (isNegative) { v = -v; } return v; } /// <summary> /// 實現見角進元 /// </summary> /// <param name="v">要進行處理的資料</param> /// <param name="x">保留的小數位數</param> /// <returns>見角進元后的結果</returns> public decimal SeeDownUp(decimal v, int x) { var isNegative = false; //如果是負數 if (v < 0) { isNegative = true; v = -v; } var IValue = 1; for (var i = 1; i <= x; i++) { IValue = IValue * 10; } var stirngpanduan = Math.Floor(v * IValue * 10).ToString(); if (stirngpanduan.Substring(stirngpanduan.Length - 1) == "0") { var Int = Math.Floor(v * IValue); v = Int / IValue; } else { var Int = Math.Ceiling(v * IValue); v = Int / IValue; } if (isNegative) { v = -v; } return v; } /// <summary> /// 實現資料的四捨五入,向上取整,向下取整 /// </summary> /// <param name="v">要進行處理的資料</param> /// <param name="x">保留的小數位數</param> /// <param name="type">1四捨五入,2向上取整,3向下取整</param> /// <returns>decimal</returns> public decimal DecimalProcessing(decimal v, int x, string type) { decimal result = 0; switch (type) { case "1": result = Round(v, x); break; case "2": result = Ceiling(v, x); break; case "3": result = Floor(v, x); break; case "4": result = SeeDownUp(v, x); break; default: result = Round(v, x); break; } return result; }