title: Creating a percentage type in C#
body: <p>My application deals with percentages a lot. These are generally stored in the database in their written form rather than decimal form (50% would be stored as 50 rather than 0.5). There is also the requirement that percentages are formatted consistently throughout the application. </p>
  
  <p>To this end i have been considering creating a struct called percentage that encapsulates this behaviour. I guess its signature would look something like this:</p>
  
  <pre><code>public struct Percentage
  {
      public static Percentage FromWrittenValue();
      public static Percentage FromDecimalValue();
  
      public decimal WrittenValue { get; set; }
      public decimal DecimalValue { get; set; }
  }
  </code></pre>
  
  <p>Is this a reasonable thing to do? It would certianly encapsulate some logic that is repeated many times but it is straightforward logic that peopel are likely to understand. I guess i need to make this type behave like a normal number as much as possible however i am wary of creating implicit conversions to a from decimal in case these confuse people further.</p>
  
  <p>Any suggestions of how to implement this class? or compelling reasons not to.</p>