私が欲しいのはこのようなものです:
String.Format("Value: {0:%%}.", 0.8526)
ここで、%%はそのフォーマットプロバイダーまたは私が探しているものです。結果:Value: %85.26.
。
基本的にwpfバインディングに必要ですが、最初に一般的なフォーマットの問題を解決しましょう:
<TextBlock Text="{Binding Percent, StringFormat=%%}" />
私が欲しいのはこのようなものです:
String.Format("Value: {0:%%}.", 0.8526)
ここで、%%はそのフォーマットプロバイダーまたは私が探しているものです。結果:Value: %85.26.
。
基本的にwpfバインディングに必要ですが、最初に一般的なフォーマットの問題を解決しましょう:
<TextBlock Text="{Binding Percent, StringFormat=%%}" />
回答:
P
フォーマット文字列を使用します。これは文化によって異なります。
String.Format("Value: {0:P2}.", 0.8526) // formats as 85.26 % (varies by culture)
カルチャに依存するフォーマットを設定して、値と「%」の間にスペースがあるかどうか、および「%」が先頭または末尾にあるかどうかを明示的に制御する正当な理由がある場合は、NumberFormatInfoのPercentPositivePatternおよびPercentNegativePatternプロパティ。
たとえば、末尾に「%」があり、値と「%」の間にスペースがない10進数値を取得するには:
myValue.ToString("P2", new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 });
より完全な例:
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)
上記の答えが最良の解決策であることがわかりましたが、パーセント記号の前の先行スペースは好きではありません。やや複雑なソリューションを見てきましたが、他の丸めソリューションを使用する代わりに、上記の回答にこの置換オプションを使用しています。
String.Format("Value: {0:P2}.", 0.8526).Replace(" %","%") // formats as 85.26% (varies by culture)
P
フォーマットはありますか?