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=%%}" />
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)
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)
Si vous souhaitez utiliser un format qui vous permet de conserver le numéro tel que votre entrie, ce format fonctionne pour moi: "# \\%"
Ce code peut vous aider:
double d = double.Parse(input_value);
string output= d.ToString("F2", CultureInfo.InvariantCulture) + "%";