web-dev-qa-db-fra.com

Format décimal pour les valeurs en pourcentage?

Ce que je veux c'est quelque chose comme ça:

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

Où %% est ce fournisseur de format ou ce que je recherche. Cela devrait donner: Value: %85.26..

J'en ai fondamentalement besoin pour la liaison wpf, mais résolvons d'abord le problème de formatage général:

<TextBlock Text="{Binding Percent, StringFormat=%%}" />
187
Shimmy

Utilisez le P chaîne de format . Cela variera selon la culture:

String.Format("Value: {0:P2}.", 0.8526) // formats as 85.26 % (varies by culture)
397
Michael Haren

Si vous avez une bonne raison de mettre de côté le format dépendant de la culture et d'obtenir un contrôle explicite pour déterminer s'il existe ou non un espace entre la valeur et le "%", et si le "%" est en tête ou en fin, vous pouvez utiliser les options de NumberFormatInfo - PercentPositivePattern et PercentNegativePattern propriétés.

Par exemple, pour obtenir une valeur décimale avec un "%" final et aucun espace entre la valeur et le "%":

myValue.ToString("P2", new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 });

Exemple plus complet:

using System.Globalization; 

...

decimal myValue = -0.123m;
NumberFormatInfo percentageFormat = new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 };
string formattedValue = myValue.ToString("P2", percentageFormat); // "-12.30%" (in en-us)
9
Jon Schneider

Si vous souhaitez utiliser un format qui vous permet de conserver le numéro tel que votre entrie, ce format fonctionne pour moi: "# \\%"

1
David Neira

Ce code peut vous aider:

double d = double.Parse(input_value);
string output= d.ToString("F2", CultureInfo.InvariantCulture) + "%";
0
Nitika Chopra