66 votes

Utilisation de C# String.Format "{0:p0}" sans l'espace avant le signe du pourcentage

En utilisant l'expression

String.Format("{0:p0}",0.10) gives 10 %

Comment faire pour que cela revienne 10% (sans l'espace entre 10 et %) ?

Culture : en-GB

81voto

Chris Walsh Points 727

String.Format("{0:0%}", 0.10)

34voto

Jay Riggs Points 30783

Utilisez le Propriété NumberFormatInfo.PercentPositivePattern :

NumberFormatInfo numberInfo = new NumberFormatInfo();
numberInfo.PercentPositivePattern = 1;
Console.WriteLine(String.Format("{0}", 0.10.ToString("P0",numberInfo)));

3 votes

Ne peut être utilisé dans XAML.

1 votes

Le nom de cet accessoire est si bizarre mais il fait le travail thx !

10voto

Yuck Points 23174

Si vous êtes d'accord pour ne pas utiliser Format() vous pourriez faire 0.10F.ToString("0%"); .

3 votes

0.00% si vous voulez deux décimales.

0 votes

String.Format("{0:0%}", .10F) fonctionnera. Double.ToString(format) utilise le même système de formatage.

6voto

Vladimir Points 146

En améliorant seulement la réponse de @Jay Riggs, et parce que je n'ai pas assez de réputation juste pour commenter, j'irais avec :

String.Format(numberInfo, "{0:p0}", 0.10);

Je pense que de cette façon, vous couvrez les situations où vous devez formater plus d'une valeur :

String.Format(numberInfo, "{0:p0} {1:p0}", 0.10, 0.20);

3voto

Modifier les informations sur la culture.

Pour certaines cultures, il affiche %10 , % 10 , 10 % , 10% , .1 , .10 , 0.1 , 0.10 ...

Je vais vérifier quel CultureInfo vous donne "10%".

2 votes

C'est la bonne réponse. L'utilisation d'une chaîne de format personnalisée brisera toute globalisation que vous pourriez vouloir prendre en charge à l'avenir.

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