Ver código fonte

四舍五入

懒得勤快 3 anos atrás
pai
commit
deb8b95ba3

+ 6 - 4
Masuit.Tools.Abstractions/Extensions/BaseType/DoubleExtensions.cs

@@ -19,10 +19,11 @@ namespace Masuit.Tools
         /// </summary>
         /// <param name="num"></param>
         /// <param name="precision">小数位数</param>
+        /// <param name="mode">四舍五入策略</param>
         /// <returns></returns>
-        public static decimal ToDecimal(this double num, int precision)
+        public static decimal ToDecimal(this double num, int precision, MidpointRounding mode = MidpointRounding.AwayFromZero)
         {
-            return Math.Round((decimal)num, precision);
+            return Math.Round((decimal)num, precision, mode);
         }
 
         /// <summary>
@@ -40,10 +41,11 @@ namespace Masuit.Tools
         /// </summary>
         /// <param name="num"></param>
         /// <param name="precision">小数位数</param>
+        /// <param name="mode">四舍五入策略</param>
         /// <returns></returns>
-        public static decimal ToDecimal(this float num, int precision)
+        public static decimal ToDecimal(this float num, int precision, MidpointRounding mode = MidpointRounding.AwayFromZero)
         {
-            return Math.Round((decimal)num, precision);
+            return Math.Round((decimal)num, precision, mode);
         }
     }
 }

+ 13 - 9
Masuit.Tools.Abstractions/Extensions/BaseType/ValueTypeConvertExtensions.cs

@@ -57,7 +57,7 @@ namespace Masuit.Tools
         /// <returns>int类型的数字</returns>
         public static decimal ToDecimal(this string s, int round, decimal defaultValue = 0)
         {
-            return Math.Round(s.TryConvertTo(defaultValue), round);
+            return Math.Round(s.TryConvertTo(defaultValue), round, MidpointRounding.AwayFromZero);
         }
 
         /// <summary>
@@ -115,10 +115,11 @@ namespace Masuit.Tools
         /// </summary>
         /// <param name="num"></param>
         /// <param name="decimals"></param>
+        /// <param name="mode">四舍五入策略</param>
         /// <returns></returns>
-        public static decimal Round(this ref decimal num, int decimals)
+        public static decimal Round(this ref decimal num, int decimals, MidpointRounding mode = MidpointRounding.AwayFromZero)
         {
-            num = Math.Round(num, decimals);
+            num = Math.Round(num, decimals, mode);
             return num;
         }
 
@@ -127,10 +128,11 @@ namespace Masuit.Tools
         /// </summary>
         /// <param name="num"></param>
         /// <param name="decimals"></param>
+        /// <param name="mode">四舍五入策略</param>
         /// <returns></returns>
-        public static double Round(this ref double num, int decimals)
+        public static double Round(this ref double num, int decimals, MidpointRounding mode = MidpointRounding.AwayFromZero)
         {
-            num = Math.Round(num, decimals);
+            num = Math.Round(num, decimals, mode);
             return num;
         }
 
@@ -139,12 +141,13 @@ namespace Masuit.Tools
         /// </summary>
         /// <param name="num"></param>
         /// <param name="decimals"></param>
+        /// <param name="mode">四舍五入策略</param>
         /// <returns></returns>
-        public static decimal? Round(this ref decimal? num, int decimals)
+        public static decimal? Round(this ref decimal? num, int decimals, MidpointRounding mode = MidpointRounding.AwayFromZero)
         {
             if (num.HasValue)
             {
-                num = Math.Round(num.Value, decimals);
+                num = Math.Round(num.Value, decimals, mode);
             }
             return num;
         }
@@ -154,12 +157,13 @@ namespace Masuit.Tools
         /// </summary>
         /// <param name="num"></param>
         /// <param name="decimals"></param>
+        /// <param name="mode">四舍五入策略</param>
         /// <returns></returns>
-        public static double? Round(this ref double? num, int decimals)
+        public static double? Round(this ref double? num, int decimals, MidpointRounding mode = MidpointRounding.AwayFromZero)
         {
             if (num.HasValue)
             {
-                num = Math.Round(num.Value, decimals);
+                num = Math.Round(num.Value, decimals, mode);
             }
             return num;
         }