2009-04-24 10 views
16

Quelle est la meilleure pratique pour le scénario répertorié ci-dessous?Bonnes pratiques - Mettre en forme plusieurs devises

Nous avons une application dont nous aimerions prendre en charge plusieurs devises. Le logiciel respectera les paramètres régionaux et régionaux des utilisateurs pour dicter le bon format numérique, soit 10 000,00 $ ou 10 000,00 ₴ etc.

Nous aimerions toutefois pouvoir formater différents numéros en fonction d'un identifiant de devise (peut-être les trois lettre code ISO4217). Notre idée est de stocker une table dans la base de données avec chaque devise, puis de demander à l'utilisateur de sélectionner le symbole monétaire qui sera utilisé. Le programme formatera ensuite tous les numéros en fonction du paramètre régional/régional, mais utilisera le symbole monétaire défini dans notre programme.

Ainsi, compte tenu des valeurs et devises suivantes
10000 AUD
5989.34 USD
450 EUR

le programme génèrerait
$ 10,000.00
$ 5,989.34
€ 450,00

ou régional en définissant les nombres formés comme #####, ## $ le résultat serait;
10000,00 $
5989,34
$ 450,00 €

respect Numéro locale/région mise en forme, mais l'affichage des devises différentes, ce qui est la meilleure pratique pour cela?

J'espère que cela a du sens.

La technologie utilisée est C# .NET 2.0.

+0

Vous devriez faire référence à votre question précédente, je pense qu'ils vont bien ensemble: http://stackoverflow.com/questions/783971/storing-currency-symbols-in-a-database-table – Elijah

Répondre

3

Il semble que vous avez une poignée sur les meilleures pratiques pour le formatage des données. Si j'étais vous je m'inquiéterais moins de ce qui est techniquement la norme mais me concentrerais davantage sur ce à quoi vos utilisateurs sont habitués.

Si vous opérez sur des marchés où les utilisateurs connaissent assez bien les différentes devises, c'est une chose très différente de celle d'avoir plus d'utilisateurs monoculturels. Selon le cas, vous devrez concevoir votre interface différemment.

De plus, si votre exigence est d'afficher une devise à toute locale, la norme ISO4217 est votre meilleur pari. C'est ce qui est montré dans les magasins de change du monde entier, sur les échanges de devises, les factures, etc. Autrement, l'affichage des symboles monétaires pourrait être assez déroutant pour certains utilisateurs et le symbole n'indique pas la devise.

Je voudrais également faire référence aux questions SO suivantes. Tous ne se rapportent pas directement à votre problème, mais ils ont de très bonnes discussions sur les problèmes liés à la prise en charge de plusieurs devises.

1

Plutôt que de stocker tout le symbole monétaire, vous pouvez stocker la chaîne de culture pour chaque code de monnaie, alors AUD -> en-AU

CultureInfo ci = new CultureInfo("en-AU"); 
currencyValue.ToString("c", ci); 

Je ne suis pas sûr de la flexibilité dans la forme atting disponible.

Je ne sais pas si cela aide:

Formatting Numeric Data for a Specific Culture

+0

Ce n'est pas une solution viable pour les devises qui sont utilisées dans plusieurs endroits, comme l'euro. Différents pays de la zone euro ont différents formats numériques. –

+0

je suis d'accord. le format numérique doit respecter la culture actuelle de l'ordinateur tandis que le symbole monétaire représente n'importe quelle monnaie. la solution proposée n'est pas viable. –

0

J'ai fait face à une situation similaire. J'ai trouvé un moyen, ne sais pas à quel point ce sera utile pour vous. Mais cela a résolu mes problèmes. Je définis une chaîne de session pour chaque lieu comme Session ["cur"] = "0.000" ou "0.00" pour chaque authentification de connexion. Et où que les devises viennent dans le système, j'ai utilisé .ToString [Session ["cur"]. ToString()] pour les variables du modèle. Ça a fait l'affaire pour moi. J'espère que cela vous aide aussi.

Questions connexes