Reputation: 39394
I created the following Double comparer to compare 2 doubles with precision:
class DoubleComparer : IEqualityComparer<Double> {
private readonly int _precision;
public DoubleComparer(int precision)
{
_precision = precision;
}
public bool Equals(double x, double y)
{
return Double.Equals(Math.Round(x, _precision), Math.Round(y, _precision));
}
public int GetHashCode(double obj)
{
return obj.GetHashCode();
}
}
I would also like to compare Decimals.
Can I create one Comparer that could handle Double and Decimal?
Or do I need two?
Upvotes: 0
Views: 229
Reputation: 21709
You can just implement more than one interface. For example:
class DecimalAndDoubleComparer : IEqualityComparer<Double>, IEqualityComparer<decimal>
{
private readonly int _precision;
public DecimalAndDoubleComparer(int precision)
{
_precision = precision;
}
public bool Equals(double x, double y)
{
return Math.Round(x, _precision) == Math.Round(y, _precision);
}
public int GetHashCode(double obj)
{
return obj.GetHashCode();
}
public bool Equals(decimal x, decimal y)
{
return Math.Round(x, _precision) == Math.Round(y, _precision);
}
public int GetHashCode(decimal obj)
{
return obj.GetHashCode();
}
}
Upvotes: 1