webentwicklung-frage-antwort-db.com.de

Dezimalzahl für Prozentwerte formatieren?

Was ich will, ist ungefähr so:

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

Wo %% ist dieser Formatanbieter oder was auch immer ich suche. Sollte ergeben: Value: %85.26..

Ich brauche es grundsätzlich für das Wpf-Binden, aber zuerst wollen wir das allgemeine Formatierungsproblem lösen:

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

Verwenden Sie die Formatzeichenfolge P . Dies variiert je nach Kultur:

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

Wenn Sie einen guten Grund haben, die kulturabhängige Formatierung aufzuheben und die explizite Kontrolle darüber zu erlangen, ob zwischen dem Wert und dem "%" ein Leerzeichen steht oder nicht und ob das "%" vorangestellt oder nachgestellt ist, können Sie NumberFormatInfo verwenden. PercentPositivePattern und PercentNegativePattern Eigenschaften.

So erhalten Sie beispielsweise einen Dezimalwert mit einem nachgestellten "%" und ohne Leerzeichen zwischen dem Wert und dem "%":

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

Vollständigeres Beispiel:

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

Wenn Sie ein Format verwenden möchten, das es Ihnen ermöglicht, die gesamte Zahl beizubehalten, funktioniert dieses Format für mich: "# \\%"

1
David Neira

Dieser Code kann Ihnen helfen:

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