2010-07-27 6 views
5

De nombreuses langues, telles que .NET languages et Java sont livrées avec une fonction de formatage de devise intégrée. Ce qu'ils font est de formater un nombre en utilisant un format numérique spécifique à la culture et d'ajouter le symbole monétaire de la culture.Les fonctions de formatage des devises sont-elles réellement utiles?

Le problème ici est que le format numérique est fortement couplé au symbole monétaire. En pratique, le format des nombres devrait être le bon pour la langue du texte environnant, tandis que le symbole de la monnaie devrait être pour la monnaie dont on parle. Par exemple, vous n'utiliserez pas de séparateurs de milliers de dollars américains lorsque vous parlez de dollars américains dans un document en allemand.

Pouvez-vous penser à une utilisation pratique de ce type de fonctions de mise en forme de devises, ou existent-elles simplement pour impressionner les responsables de la gestion?

+0

Le symbole de l'unité monétaire est-il toujours lié au symbole du séparateur ou est-il séparable? La fonction 'money_format' de PHP permet un contrôle assez serré sur la chaîne formatée, y compris la possibilité de supprimer le symbole monétaire. –

+0

N'est-il pas utile pour une application globale utilisée par des utilisateurs de différents pays qui souhaitent que l'argent soit affiché dans leur format local? Ou ai-je manqué le point? –

+0

@no: .NET semble vous permettre de changer le symbole de la devise (prend quelques lignes de code, ce qui est à un pas de la chaîne de format propre.) Dans certains contextes, vous êtes seulement autorisé à spécifier une chaîne de format. . Je ne pouvais pas trouver un moyen de le faire en Java, mais je ne suis pas exactement un expert Java, donc je ne peux pas le dire avec certitude. –

Répondre

1

Au moins dans .NET le format de nombre est lié à une culture, pas le symbole. Le symbole monétaire par défaut est le principal associé à cette culture. Le symbole peut être remplacé si nécessaire. Comme votre exemple, si j'incorpore une valeur monétaire dans une chaîne, j'utilise la culture de la chaîne pour le format, mais remplace le symbole monétaire correctement. Le reste du formatage est laissé tel quel. Par contre, si je fais un rapport, toutes les valeurs sont formatées en utilisant la même culture. J'utilise normalement les codes ISO à 3 caractères au lieu des symboles monétaires dans ce cas, surtout si plus de 2 devises sont concernées, pour éviter les problèmes de polices.

Ryan's answer to another question décrit les pratiques recommandées pour la mise en forme des devises en C#.

+0

Changer le symbole de la monnaie est un bon point, même si cela nécessite énormément de code pour quelque chose que IMHO devrait faire partie des paramètres de format. Il est également facile de rencontrer des problèmes avec les symboles de devise affichés sur la mauvaise taille (50 $ vs 50 kr), sans compter que certaines devises changent réellement l'ordre en fonction des paramètres régionaux (50 € vs 50 €) –

+1

J'ai fini par écrire méthode d'extension sur 'decimal' pour gérer tout le travail de drudge, un peu similaire à l'exemple de Jon Skeet ici: http://stackoverflow.com/questions/1071273/currency-formatting/1071302#1071302 – devstuff

Questions connexes