35 votes

Type de données argent pour .NET ?

Vous cherchez un bon Type de données sur l'argent pour .NET qui prend en charge monnaies y taux de change (avec le comportement et les opérations connexes).

  • Note : J'ai commencé à chercher le code source vu en impression dans le livre Développement piloté par les tests par exemple par l'auteur Kent Beck - il développe un joli concept monétaire. Impossible de trouver la source complète en ligne. Le livre ne contient pas une liste unique - au lieu de cela, il développe le code source sur la durée du livre.

Bien que le livre n'aille pas plus loin, j'aimerais aussi que la classe d'argent soutienne différents mécanismes d'arrondi car cela varie également entre les institutions financières du monde entier.

Edit 1 : Clarifications

Par "classe d'argent", j'entends un type de données .NET que je peux utiliser pour prendre en charge l'argent et ses opérations, avec prise en charge des devises et calcul des taux de change. Quelque chose comme cela est une abstraction de plus haut niveau et pourrait utiliser en interne un type de données primitif. Il pourrait également s'appuyer sur un ensemble de classes telles que : Money, ExchangeRate, Bank, etc.

Il peut s'agir d'un type de valeur (c'est-à-dire d'une structure) ou d'un type de référence (c'est-à-dire d'une classe), mais dans tous les cas, il doit être complet et prendre en charge les fonctionnalités susmentionnées.

Edit 2 : Objectifs du type de données Money

(Cela montre également pourquoi un type brut décimal, int ou autre type primitif ne suffira pas à tous les besoins en matière d'argent).

Les objectifs d'un type de données Argent seraient :

  • Fonctions de sécurité (par exemple, empêcher l'arithmétique sur différents types de devises).
  • Enregistrez le type de devise avec la valeur (par exemple AUD, US, DKK).
  • Stocker les détails du formatage (c'est-à-dire le regroupement des décimales, les symboles monétaires, etc.)
  • Fournisseurs de conversion (par exemple, taux de change) pour aider à compléter la solution.
  • Réduire plusieurs devises dans une expression pour obtenir un résultat.

Note : Des valeurs de données variables, comme les taux de change, peuvent être chargées depuis une source externe et utilisées. Cette question ne déduit rien de dynamique qui soit codé en dur dans le concept de l'argent.

9voto

waheed Points 378

Martin Fowler considère l'argent comme un cas particulier de "quantité", et il pense que le type de données approprié pour l'argent devrait être le grand nombre entier. Et il n'a pas tort.

Patronage de la quantité et de l'argent par Martin Fowler

5voto

John K Points 13695

Money Data Type @ The Code Project

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

L'auteur fait état d'un problème similaire :

dans le cadre d'une application récente I j'ai réalisé à quel point .NET était insuffisant pour support des devises, ne vous méprenez pas, il y a beaucoup de "pièces" mais la colle pour tous les articles est manquante donc ce article est une réponse à cela.

et remplit les objectifs

mes principaux objectifs sont devenus

  • Enregistrez le type de devise avec la valeur (par exemple AUD, US, DKK).
  • Enregistrez les détails du formatage (c'est-à-dire le regroupement des décimales, les symboles monétaires, etc.).
  • Fournisseurs de conversion, je ne voulais pas coder en dur car il s'agit d'un type de données. et non une solution.
  • des dispositifs de sécurité pour le développement (par exemple, empêcher l'arithmétique sur des types de monnaie).

Jusqu'à présent, c'est le code .NET le plus proche de ce que je recherche. Il répond à la plupart des exigences de Money.

Si quelqu'un a quelque chose de mieux, il serait très apprécié.

2voto

user268005 Points 89

Vous trouverez probablement que la création de votre propre classe aboutira à la meilleure solution.

2voto

Eric Hauser Points 3446

Si vous cherchez des modèles, vous pouvez consulter le site suivant Joda Money . Il s'agit de Java, mais il devrait vous donner quelques idées sur une API. Une mise en œuvre en C# serait beaucoup moins verbeuse en raison de la surcharge des opérateurs.

1voto

Kazar Points 16014

Jetez un coup d'œil ici :

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

Il fournit une bibliothèque .NET reproduisant toutes les fonctions financières d'Excel.

La conversion des devises est une opération délicate, car les taux changent continuellement, et les valeurs codées en dur sont donc plus ou moins inutiles. Cependant, vous pouvez peut-être utiliser un service web pour accéder à des taux de change actualisés. Ce site L'un d'eux semble être un bon début. Encore mieux, une interface de style REST vers le même convertisseur :

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

Cela donne donc le taux de conversion des livres sterling en euros.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X