Тип данных money для.NET?

Поиск хорошего Типа данных money для.NET, которая поддерживает валюты и обменные курсы (со связанным поведением и операциями).

  • Примечание: Я начал искать исходный код, замеченный в печати в книжной Разработке через тестирование Примером автором Kent Beck - он разрабатывает хорошую Монетаристскую концепцию. Не удалось найти полный источник онлайн. Книга не содержит один исключительный список - вместо этого это разрабатывает исходный код по продолжительности книги.

Хотя книга не идет глубже, я также хотел бы, чтобы Денежный класс поддерживал различные механизмы округления, потому что это также варьируется среди финансовых учреждений во всем мире.

Редактирование 1: разъяснения

"Денежным классом" я имею в виду тип данных.NET, который я могу использовать для поддержки денег и его операций, вместе с поддержкой валюты и вычислениями обменного курса. Что-то как этот - высокоуровневая абстракция и могло бы внутренне использовать примитивный тип данных. Также это могло бы полагаться на пакет классов как: Деньги, ExchangeRate, Банк, и т.д.

Это мог бы быть тип значения (т.е. структура) или ссылочный тип (т.е. класс), но так или иначе это будет завершено и поддерживать вышеупомянутые функции.

Редактирование 2: Цели Типа данных money

(Это также показывает, почему необработанное десятичное число, интервал или другой тип примитива не будут достаточны для всех Денежных потребностей),

Цели Типа данных money были бы:

  • Функции безопасности (т.е. предотвращают арифметику на различных типах валюты).
  • Снабдите тип валюты значением (т.е. AUD, МЫ, датская крона).
  • Детали форматирования хранилища (т.е. группировка десятичного числа, обозначения денежной единицы, и т.д.).
  • Поставщики преобразования (например, обменный курс), чтобы помочь закруглить решение.
  • Уменьшите несколько валют в выражении для достижения результата.

Примечание: Переменные значения данных как обменные курсы могут загружаться из внешнего источника и использоваться. Этот вопрос не выводит ничего динамического, трудно кодируется в понятие Денег.

35
задан 14 revs 12 February 2010 в 05:50
поделиться

6 ответов

Посмотрите здесь:

http://blogs.msdn.com/lucabol/archive/2008/12/04/financial-functions-for-net-released.aspx

Она предоставляет .NET библиотеку, воспроизводящую все финансовые функции excel.

Выполнение конвертации валют - сложная задача, так как очевидно, что она постоянно меняется, поэтому жестко закодированные значения будут более или менее бесполезны. Тем не менее, вы можете воспользоваться веб-сервисом для доступа к актуальным обменным курсам. Эта выглядит неплохим началом. Еще лучше, интерфейс в стиле REST к тому же конвертеру:

http://www.webservicex.com/CurrencyConvertor.asmx/ConversionRate?FromCurrency=GBP&ToCurrency=EUR

Так что выводит обменный курс фунта стерлингов к евро.

1
ответ дан 27 November 2019 в 15:46
поделиться

вы, вероятно, обнаружите, что создание собственного класса приведет к наилучшему решению.

2
ответ дан 27 November 2019 в 15:46
поделиться

Тип данных о деньгах @ The Code Project

http://www.codeproject.com/KB/vb/moneyDatatype.aspx

Автор заявляет об аналогичной проблеме:

в рамках недавней заявки I понял, насколько недостает .NET для валютная поддержка, не пойми меня неправильно, есть много "кусочков" , но клей для всех элементов отсутствует, так что это статья является ответом на это.

и выполняет цели

моими основными целями стали

  • Хранить тип валюты со стоимостью (т.е. AUD, US, DKK).
  • Хранить детали форматирования (т.е. десятичная группировка, валютные символы, и тому подобное).
  • Провайдеры преобразования, я не хотел усложнять код, так как это тип данных. а не решение.
  • Функции безопасности при разработке (т.е. предотвращение арифметики на различных типы валют).

Пока это самый близкий .NET код к тому, что я ищу. Он удовлетворяет большинству требований к Деньгам.

Если у кого-то есть что-то получше, он был бы очень признателен.

5
ответ дан 27 November 2019 в 15:46
поделиться

Мартин Фаулер рассматривает деньги как частный случай «количества», во-вторых, он считает, что правильным типом данных для денег должно быть большое целое число. И он прав.

Шаблон количества и денег от Мартина Фаулера

9
ответ дан 27 November 2019 в 15:46
поделиться

Я понимаю вашу точку зрения о преимуществах уровня абстракции над деньгами. Однако мой взгляд на деньги и их «операции» довольно расплывчатый.Для других вещей, таких как File , мне ясно, что должно быть Open , Read , Write , Close операции. Но что касается денег, я не могу придумать ничего, кроме основных математических операций (+, -, *, /)

Одна из известных мне библиотек количественного финансирования C ++ действительно содержит эту абстракцию Money ( http: // Quantlib .org / reference / class_quant_lib_1_1_money.html .) Но вы можете ясно видеть, что это очень тонкая оболочка, которая обеспечивает базовую перегрузку операторов и преобразование единиц измерения по сравнению с Decimal.

В большинстве случаев я думаю, что десятичная дробь может удовлетворить ваши требования. Если вам нужно поддерживать конкретную операцию Money, я думаю, что можно развернуть свои собственные классы.

0
ответ дан 27 November 2019 в 15:46
поделиться

Если вы ищете выкройки, посмотрите Joda Money . Это Java, но она должна дать вам некоторые идеи по API. Реализация C # будет намного менее подробной из-за перегрузки оператора.

2
ответ дан 27 November 2019 в 15:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: