Велика кількість комп'ютерів обробляють дані про гроші. Дивно, що досі гроші не являються базовим типом у мовах програмування.
Складність такого типу полягає в реалізації операцій додавання, оскільки необхідно подбати про конвертацію валюти. Інша проблема появляється при заокруглені тому, що важливо уникати навіть незначних похибок.
public class Money
{
public decimal Amount { get; }
public string Currency { get; }
public static Money Add(Money a, Money b)
{
if (a.Currency != b.Currency) throw new InvalidOperationException();
return new Money(a.Amount + b.Amount, a.Currency);
}
}