Click here to Skip to main content
15,889,595 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have a job need todo like FloatRange class in java: FullSync / Code / [05d6a0] /utils/org/apache/commons/lang/math/FloatRange.java[^]

And im was searched on the google but not found any informations about equivalent in c# with this FloatRange java class.

this is what i need to use like FloatRange java class:

C#
FloatRange range = new FloatRange(angle, 360.0F - angle);

C#
if (range.containsFloat(float value)) {...}


What I have tried:

I just wanna know there are any way i can do like this FloatRange class?
Posted
Updated 13-Dec-16 5:14am

Just create a C# class with two members for min and max that are initialised by the constructor and the containsFloat functions that checks if the passed argument is covered by the range:
C#
class FloatRange
{
    private float minValue;
    private float maxValue;

    public FloatRange(float minValue, float maxValue)
    {
        this.minValue = min;
        this.maxValue = max;
    }

    public bool containsFloat(float value)
    {
        return value >= minValue && value <= maxValue;
    }
}
 
Share this answer
 
Comments
EADever 13-Dec-16 11:16am    
Thanks bro, this is what im looking for.
Here's a slightly more complete generic implementation:
C#
public struct Range<T> : IEquatable<Range<T>>
{
    public Range(T minimum, T maximum, IComparer<T> comparer = null)
    {
        if (minimum == null) throw new ArgumentNullException(nameof(minimum));
        if (maximum == null) throw new ArgumentNullException(nameof(maximum));
        if (comparer == null) comparer = Comparer<T>.Default;
        
        if (comparer.Compare(minimum, maximum) <= 0)
        {
            Minimum = minimum;
            Maximum = maximum;
        }
        else
        {
            Minimum = maximum;
            Maximum = minimum;
        }
    }
    
    public Range(T value)
    {
        if (value == null) throw new ArgumentNullException(nameof(value));
        
        Minimum = value;
        Maximum = value;
    }
    
    public T Minimum { get; }
    public T Maximum { get; }
    
    public override string ToString()
    {
        return $"Range[{Minimum},{Maximum}]";
    }
    
    public override int GetHashCode()
    {
        unchecked
        {
            return (Minimum.GetHashCode() * 397) ^ Maximum.GetHashCode();
        }
    }
    
    public override bool Equals(object obj)
    {
        return obj is Range<T> && Equals((Range<T>)obj);
    }
    
    public bool Equals(Range<T> other)
    {
        var comparer = EqualityComparer<T>.Default;
        
        return comparer.Equals(Minimum, other.Minimum)
            && comparer.Equals(Maximum, other.Maximum);
    }
    
    public static bool operator ==(Range<T> left, Range<T> right)
    {
        return left.Equals(right);
    }
    
    public static bool operator !=(Range<T> left, Range<T> right)
    {
        return !left.Equals(right);
    }
    
    public bool Contains(T value, IComparer<T> comparer = null)
    {
        if (comparer == null) comparer = Comparer<T>.Default;
        
        return comparer.Compare(Minimum, value) <= 0
            && comparer.Compare(value, Maximum) <= 0;
    }
    
    public bool Contains(Range<T> range, IComparer<T> comparer = null)
    {
        if (comparer == null) comparer = Comparer<T>.Default;
        
        return comparer.Compare(Minimum, range.Minimum) <= 0
            && comparer.Compare(range.Maximum, Maximum) <= 0;
    }
    
    public bool Overlaps(Range<T> range, IComparer<T> comparer = null)
    {
        if (comparer == null) comparer = Comparer<T>.Default;
        
        return comparer.Compare(Minimum, range.Maximum) <= 0
            && comparer.Compare(range.Minimum, Maximum) <= 0;
    }
}
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900