[英]Comparer for Double and Decimal
我創建了以下 Double 比較器來精確比較 2 個雙精度:
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();
}
}
我也想比較小數。
我可以創建一個可以處理雙精度和十進制的比較器嗎?
還是我需要兩個?
您可以只實現多個接口。 例如:
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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.