簡體   English   中英

雙數和小數比較器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM