main
 1using System;
 2using System.Globalization;
 3
 4namespace Gorilla.Commons.Utility
 5{
 6    public class Percent
 7    {
 8        readonly double percentage;
 9
10        public Percent(double percentage)
11        {
12            this.percentage = percentage;
13        }
14
15        public Percent(double portion_of_total, double total)
16        {
17            percentage = portion_of_total/total;
18            percentage *= 100;
19            percentage = Math.Round(percentage, 1);
20        }
21
22        public bool represents(Percent other_percent)
23        {
24            return Equals(other_percent);
25        }
26
27        public bool is_less_than(Percent other_percent)
28        {
29            return percentage.CompareTo(other_percent.percentage) < 0;
30        }
31
32        public static implicit operator Percent(double percentage)
33        {
34            return new Percent(percentage);
35        }
36
37        public bool Equals(Percent other)
38        {
39            if (ReferenceEquals(null, other)) return false;
40            if (ReferenceEquals(this, other)) return true;
41            return other.percentage == percentage;
42        }
43
44        public override bool Equals(object obj)
45        {
46            if (ReferenceEquals(null, obj)) return false;
47            if (ReferenceEquals(this, obj)) return true;
48            if (obj.GetType() != typeof (Percent)) return false;
49            return Equals((Percent) obj);
50        }
51
52        public override int GetHashCode()
53        {
54            return percentage.GetHashCode();
55        }
56
57        public override string ToString()
58        {
59            return percentage.ToString(CultureInfo.InvariantCulture);
60        }
61    }
62}