Formatage de nombres en tant que chaînes avec des virgules à la place des nombres décimaux
J'ai le numéro suivant: 4.3
Je voudrais afficher ce numéro 4,3
pour certains de nos amis Européens.
J'étais sous l'impression que la ligne suivante serait de faire le tour:
string ret = string.Format("{0:0,0}", 4.3); //returns "04", not "4,3"
Suis-je à l'aide de la chaîne incorrecte?
source d'informationauteur DaveDev
Vous devez vous connecter pour publier un commentaire.
Je pense:
devrait faire ce que vous voulez.
Cela dépend de ce que vous voulez faire. Si vous voulez faire de l'ensemble de votre demande de prêt pour une autre langue sortie d'utiliser
Si vous voulez avoir une langue mixte de l'application (ce qui signifie que certains des résultats sont mis en forme dans une langue, certains dans un autre) vous devez utiliser les surcharges de la Chaîne spécifique des fonctions comme:
La première méthode est préférable si c'est possible parce que vous avez seulement besoin d'une seule ligne dans votre application et tout se passera comme prévu. Dans le deuxième, vous devez ajouter de la culture paramètre pour chaque Chaîne de caractères en sortie de la méthode dans l'ensemble de votre application.
Pour une solution générale, vous pouvez définir le thread de l'INTERFACE utilisateur de la culture à la culture utilisés par vos amis Européens. Cela aura une incidence sur la présentation des nombres, des devises, des dates, etc.
Le numéro de mise en forme par défaut utilise le NumberFormatInfo de l'actuel CultureInfode sorte qu'il affiche en utilisant les paramètres régionaux de l'ordinateur.
Par conséquent, vous n'avez pas vraiment besoin de faire quelque chose de particulier, sauf peut-être s'assurer que le bon CultureInfo est utilisé.
Comme pour la question, oui, la chaîne n'est pas valide. Une "," dénote un mille-séparateur, et non pas la virgule de séparation. Regarder le NumberFormatInfo et la les formats de nombre personnalisés.
Utiliser un CultureInfo qui a une virgule au lieu du point décimal (français par exemple) :
Oui, vous utilisez le mauvais chaîne, et aussi le problème ne peut être résolu que de fournir une chaîne de mise en forme.
Ce que votre chaîne de mise en forme n'est pour mettre en forme le numéro à l'aide du modèle
"0"
alors alignés sur la longueur0
.Lorsque vous spécifiez le séparateur décimal dans une chaîne de mise en forme, c'est toujours une période quelle que soit la culture. Le séparateur décimal dans le résultat de la mise en forme sur l'autre main est toujours celui qui est utilisé par la culture actuelle. Donc, pour obtenir une virgule comme séparateur décimal dans le résultat, vous devez assurez-vous que la culture utilisé pour la mise en forme est celui qui utilise la virgule comme séparateur décimal.
Vous pouvez définir la culture actuelle pour le fil de sorte qu'il est utilisé par défaut par la mise en forme, ou de spécifier une culture à l'appel:
Paramètres le fil de la culture permettra de faire la conversion automatiquement. Cependant, si vous souhaitez formater ce avec une chaîne personnalisée, vous pouvez effectuer les opérations suivantes:
ou
Le "." est le spécificateur de format pour le point décimal pour la culture actuelle. Plus d'infos pour les formats de nombre personnalisés sont trouvés à: http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
Vous pouvez toujours vérifier ce personnage pour le point décimal est avec:
Numéro de mise en forme peuvent être gérées par le cadre, si vous utilisez la bonne la culture lors de la manipulation de le nombre.
Si vous voulez faire un "one-off" de l'affichage, de la deuxième approche de travail. Si vous souhaitez afficher le numéro de tous correctement, vous devriez vraiment être le réglage de la culture du thread en cours. De cette façon, n'importe quel nombre de manipulation de la poignée séparateurs décimaux, le regroupement de caractères et d'autres spécifiques à la culture les choses correctement.
Il en va de même pour l'analyse des chiffres. Si un utilisateur entre
1,234
comment savez-vous si ils sont entrés dans1.234
(la virgule étant le séparateur décimal) ou1234
(la virgule étant un séparateur de groupe)? C'est là que la culture contribue comme il sait comment faire pour afficher des nombres et peut également être utilisé pour analyser correctement:Ci-dessus seront de sortie
1234
(la virgule est un séparateur décimal dans mon en-us culture par défaut),1.234
(la virgule est un séparateur décimal en français) et1,234
(encore une fois, la virgule est un séparateur décimal en français, et aussi la culture du thread est le français afin qu'elle affiche à l'aide de cette culture - d'où la virgule comme séparateur décimal dans la sortie).