je dois convertir une chaîne en un format monétaire de {###}. ###. ###, ##c problème de format # chaîne pour l'argent
qui est
une valeur de 5461497702600
deviendrait
54.614.977.026,00
Les chiffres deviennent trop grandes.
J'utilise
return string.Format("{0:#" + (val < 1000 ? "" : "\\.") + "##0.00}", val);
qui revient pour l'exemple
54614977.026,00
(un seul point)
Toute aide serait appréciée
Par curiosité, est '5461497702600m.ToString (« C », someculture)' où someculture est une culture qui a ce que vous voulez (de -DE, par exemple), ou plutôt une culture personnalisée avec le symbole monétaire défini sur une chaîne vide, n'est pas suffisant? Je ne ferais jamais de telles choses manuellement si quelqu'un d'autre peut le faire :) – OregonGhost
En référence à la plupart des réponses ci-dessous, n'oubliez pas que vous pouvez éviter de coder en dur vos caractères séparateurs (par exemple, ne supposez pas que le séparateur décimal est un symbole d'époque dans toutes les cultures). Voir http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencydecimalseparator.aspx. La liste complète: CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator et NumberGroupSeparator. – rohancragg
+1 @ OregonGhost/@ Rohan Cragg. J'apprécie également toutes les réponses.Reconnu que je réinventais la roue. À titre d'explication, la spécification d'origine (que le client a mal traduite) n'en a demandé qu'une seule. et celui, qui est comment je suis arrivé à la solution dans la question. Sur le site d'aller vivre, bien sûr, nous apprenons la vérité :) Cheers – Kamal