mirror of
https://github.com/UglyToad/PdfPig.git
synced 2025-10-14 10:55:04 +08:00
add AlmostEqualsToZero() and AlmostEquals().
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
/// <returns>The mode of the sequence. Returns <see cref="float.NaN"/> if the sequence has no mode or if it is not unique.</returns>
|
||||
public static float Mode(this IEnumerable<float> array)
|
||||
{
|
||||
if (array == null || array.Count() == 0) return float.NaN;
|
||||
if (array == null || !array.Any()) return float.NaN;
|
||||
var sorted = array.GroupBy(v => v).Select(v => (v.Count(), v.Key)).OrderByDescending(g => g.Item1);
|
||||
var mode = sorted.First();
|
||||
if (sorted.Count() > 1 && mode.Item1 == sorted.ElementAt(1).Item1) return float.NaN;
|
||||
@@ -29,11 +29,32 @@
|
||||
/// <returns>The mode of the sequence. Returns <see cref="double.NaN"/> if the sequence has no mode or if it is not unique.</returns>
|
||||
public static double Mode(this IEnumerable<double> array)
|
||||
{
|
||||
if (array == null || array.Count() == 0) return double.NaN;
|
||||
if (array == null || !array.Any()) return double.NaN;
|
||||
var sorted = array.GroupBy(v => v).Select(v => (v.Count(), v.Key)).OrderByDescending(g => g.Item1);
|
||||
var mode = sorted.First();
|
||||
if (sorted.Count() > 1 && mode.Item1 == sorted.ElementAt(1).Item1) return double.NaN;
|
||||
return mode.Key;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test for almost equality to 0.
|
||||
/// </summary>
|
||||
/// <param name="number"></param>
|
||||
/// <param name="epsilon"></param>
|
||||
public static bool AlmostEqualsToZero(this double number, double epsilon = 1e-5)
|
||||
{
|
||||
return (number > -epsilon) && (number < epsilon);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test for almost equality.
|
||||
/// </summary>
|
||||
/// <param name="number"></param>
|
||||
/// <param name="other"></param>
|
||||
/// <param name="epsilon"></param>
|
||||
public static bool AlmostEquals(this double number, double other, double epsilon = 1e-5)
|
||||
{
|
||||
return AlmostEqualsToZero(number - other, epsilon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user