diff --git a/Apewer/NumberUtility.cs b/Apewer/NumberUtility.cs
index 03b3faa..f74cf6a 100644
--- a/Apewer/NumberUtility.cs
+++ b/Apewer/NumberUtility.cs
@@ -187,38 +187,155 @@ namespace Apewer
#endregion
- #region 平均值
+ #region 求和
- /// 平均值。
- public static float Average(params float[] values)
+ /// 求和。
+ public static int Sum(params byte[] values)
{
- if (values == null) return 0F;
+ if (values == null) return 0;
- var amount = 0F;
- foreach (var i in values) amount += i;
- return amount / values.Length;
+ var result = 0;
+ foreach (var i in values) result += i;
+ return result;
}
- /// 平均值。
- public static double Average(params double[] values)
+ /// 求和。
+ public static int Sum(params short[] values)
{
- if (values == null) return 0D;
+ if (values == null) return 0;
- var amount = 0D;
- foreach (var i in values) amount += i;
- return amount / Convert.ToDouble(values.Length);
+ var result = 0;
+ foreach (var i in values) result += i;
+ return result;
}
- /// 平均值。
- public static decimal Average(params decimal[] values)
+ /// 求和。
+ public static int Sum(params int[] values)
{
- if (values == null) return 0M;
+ if (values == null) return 0;
- var amount = 0M;
- foreach (var i in values) amount += i;
- return amount / Convert.ToDecimal(values.Length);
+ var result = 0;
+ foreach (var i in values) result += i;
+ return result;
}
+ /// 求和。
+ public static long Sum(params long[] values)
+ {
+ if (values == null) return 0;
+
+ var result = 0L;
+ foreach (var i in values) result += i;
+ return result;
+ }
+
+ /// 求和。
+ public static int Sum(params sbyte[] values)
+ {
+ if (values == null) return 0;
+
+ var result = 0;
+ foreach (var i in values) result += i;
+ return result;
+ }
+
+ /// 求和。
+ public static int Sum(params ushort[] values)
+ {
+ if (values == null) return 0;
+
+ var result = 0;
+ foreach (var i in values) result += i;
+ return result;
+ }
+
+ /// 求和。
+ public static uint Sum(params uint[] values)
+ {
+ if (values == null) return 0;
+
+ var result = 0U;
+ foreach (var i in values) result += i;
+ return result;
+ }
+
+ /// 求和。
+ public static ulong Sum(params ulong[] values)
+ {
+ if (values == null) return 0;
+
+ var result = 0UL;
+ foreach (var i in values) result += i;
+ return result;
+ }
+
+ /// 求和。
+ public static float Sum(params float[] values)
+ {
+ if (values == null) return 0;
+
+ var result = 0F;
+ foreach (var i in values) result += i;
+ return result;
+ }
+
+ /// 求和。
+ public static double Sum(params double[] values)
+ {
+ if (values == null) return 0;
+
+ var result = 0D;
+ foreach (var i in values) result += i;
+ return result;
+ }
+
+ /// 求和。
+ public static decimal Sum(params decimal[] values)
+ {
+ if (values == null) return 0;
+
+ var result = 0M;
+ foreach (var i in values) result += i;
+ return result;
+ }
+
+ #endregion
+
+ #region 平均值
+
+ /// 平均值。
+ public static double Average(params byte[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length));
+
+ /// 平均值。
+ public static double Average(params short[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length));
+
+ /// 平均值。
+ public static double Average(params int[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length));
+
+ /// 平均值。
+ public static double Average(params long[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length));
+
+ /// 平均值。
+ public static double Average(params sbyte[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length));
+
+ /// 平均值。
+ public static double Average(params ushort[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length));
+
+ /// 平均值。
+ public static double Average(params uint[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length));
+
+ /// 平均值。
+ public static double Average(params ulong[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length));
+
+ /// 平均值。
+ public static float Average(params float[] values) => values.IsEmpty() ? 0 : (Sum(values) / values.Length);
+
+ /// 平均值。
+ public static double Average(params double[] values) => values.IsEmpty() ? 0 : (Sum(values) / values.Length);
+
+ /// 平均值。
+ public static decimal Average(params decimal[] values) => values.IsEmpty() ? 0 : (Sum(values) / values.Length);
+
#endregion
#region 标准差
@@ -432,7 +549,7 @@ namespace Apewer
#endregion
- #region 最小值、最大值、极差
+ #region 最小值
private static T Most(Func replace, T[] values)
{
@@ -463,12 +580,27 @@ namespace Apewer
/// 最小值。
public static byte Min(params byte[] values) => Most((a, b) => a > b, values);
+ /// 最小值。
+ public static short Min(params short[] values) => Most((a, b) => a > b, values);
+
/// 最小值。
public static int Min(params int[] values) => Most((a, b) => a > b, values);
/// 最小值。
public static long Min(params long[] values) => Most((a, b) => a > b, values);
+ /// 最小值。
+ public static sbyte Min(params sbyte[] values) => Most((a, b) => a > b, values);
+
+ /// 最小值。
+ public static ushort Min(params ushort[] values) => Most((a, b) => a > b, values);
+
+ /// 最小值。
+ public static uint Min(params uint[] values) => Most((a, b) => a > b, values);
+
+ /// 最小值。
+ public static ulong Min(params ulong[] values) => Most((a, b) => a > b, values);
+
/// 最小值。
public static float Min(params float[] values) => Most((a, b) => a > b, values);
@@ -478,15 +610,34 @@ namespace Apewer
/// 最小值。
public static decimal Min(params decimal[] values) => Most((a, b) => a > b, values);
+ #endregion
+
+ #region 最大值
+
/// 最大值。
public static byte Max(params byte[] values) => Most((a, b) => a < b, values);
+ /// 最大值。
+ public static short Max(params short[] values) => Most((a, b) => a < b, values);
+
/// 最大值。
public static int Max(params int[] values) => Most((a, b) => a < b, values);
/// 最大值。
public static long Max(params long[] values) => Most((a, b) => a < b, values);
+ /// 最大值。
+ public static sbyte Max(params sbyte[] values) => Most((a, b) => a < b, values);
+
+ /// 最大值。
+ public static ushort Max(params ushort[] values) => Most((a, b) => a < b, values);
+
+ /// 最大值。
+ public static uint Max(params uint[] values) => Most((a, b) => a < b, values);
+
+ /// 最大值。
+ public static ulong Max(params ulong[] values) => Most((a, b) => a < b, values);
+
/// 最大值。
public static float Max(params float[] values) => Most((a, b) => a < b, values);
@@ -496,6 +647,10 @@ namespace Apewer
/// 最大值。
public static decimal Max(params decimal[] values) => Most((a, b) => a < b, values);
+ #endregion
+
+ #region 极差
+
/// 极差。
public static int Range(params int[] values) => Max(values) - Min(values);
@@ -513,14 +668,10 @@ namespace Apewer
#endregion
+ #region 相关性
+
/// Pearson Correlation Coefficient 皮尔逊相关系数。计算两个数组的相似度。数组长度不相等时,以 0 填充不足的长度。
- ///
- /// 0.8 ~ 1.0 : 极强相关
- /// 0.6 ~ 0.8 : 强相关
- /// 0.4 ~ 0.6 : 中等程度相关
- /// 0.2 ~ 0.4 : 弱相关
- /// 0.0 ~ 0.2 : 极弱相关或无相关
- ///
+ /// 0.8 ~ 1.0 : 极强相关
0.6 ~ 0.8 : 强相关
0.4 ~ 0.6 : 中等程度相关
0.2 ~ 0.4 : 弱相关
0.0 ~ 0.2 : 极弱相关或无相关
///
public static double Pearson(double[] bytes1, double[] bytes2)
{
@@ -554,6 +705,8 @@ namespace Apewer
return r;
}
+ #endregion
+
#region 从 String 转为数值。
// 修剪数值字符串。