Upchanging (fictional) money
<p>In a game which uses the age-old monetary system of Copper, Silver, Gold, and Platinum, where 100 units of each denomination equals 1 unit of the next highest denomination, is this an acceptable means of 'sorting' or 'up-changing' the values upon input?</p>

<pre><code>
public struct Coinage
{
    private int _copper;
    private int _silver;
    private int _gold;
    private int _platinum;

    public int Copper
    {
        get { return _copper; }
        set
        {
            int val = value;
            while (val > 99) { val -= 100; Silver ++; }
            _copper += val;
        }
    }
    public int Silver 
    { 
        get { return _silver; } 
        set 
        {
            int val = value;
            while (val > 99) { val -= 100; Gold ++; }
            _silver += val;
        } 
    }
    public int Gold
    {
        get { return _gold; }
        set
        {
            int val = value;
            while (val > 99) { val -= 100; Platinum ++; }
            _gold += val;
        }
    }
    public int Platinum { get { return _platinum; } set { _platinum = value; } }
}
</code></pre>

<p>So that however much of any denomination (lower than Platinum) I input, it will correctly change the money for me? Is it a bad idea to chain up the properties' set methods like this? Is there a more efficient way to do this in a single method?</p>

<p>Thanks.</p>
