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=%%}" />
Verwenden Sie die Formatzeichenfolge P
. Dies variiert je nach Kultur:
String.Format("Value: {0:P2}.", 0.8526) // formats as 85.26 % (varies by culture)
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)
Wenn Sie ein Format verwenden möchten, das es Ihnen ermöglicht, die gesamte Zahl beizubehalten, funktioniert dieses Format für mich: "# \\%"
Dieser Code kann Ihnen helfen:
double d = double.Parse(input_value);
string output= d.ToString("F2", CultureInfo.InvariantCulture) + "%";