かの間の変換には"#,##0"と"{0:n2}"スタイルフォーマット文字列表現?
-
05-09-2019 - |
質問
.純支援の二種類の文字列フォーマット
私が既存の設定データ #,##0
スタイル設定します。新たな機能が必要でフォーマットは同じ出力では、APIに必要なこの機能のみを受け付けライブラリリファレンスを参照タイプ {0:n2}
.
なんだろうけど、日本人の手段との間の変換にはこれら二つの表現のための数値のか。 DateTime
かっこは無視できます。
編集 いろいろ:
の
{0:n2}
スタイルとして知られて 標準数値フォーマットの
#,##0
スタイルとして知られて カスタムの数値フォーマット
解決
いいえ、あなたはできません。
あなたのリンクから標準フォーマットについてのMSDNの記事への文字列は、あなたが見つけることができます:
実際の負の数パターン 数グループのサイズ、桁区切り、 そして小数点がで指定されています 現在のNumberFormatInfoオブジェクトます。
だから、標準の書式指定子は、プログラムが実行されている文化によって異なります。
カスタム整形は番号がプログラムがで実行されているものは何でも文化、見に行くされて正確にどのように指定するので。 ITSはオールウェイズ同じように見えるつもります。
プログラムが下に実行されているコンパイル時に知られていない文化は、それはランタイムプロパティです。
だから、答えは:一対一の一貫したマッピングがありませんのでいいえ、あなたは、自動的にマップすることはできません。
。他のヒント
ット!!!
として Arjanさらに優れた回答 いきたいと思いなが可能に証明ファッションの全ロケール(コArjan).
私の目的にかんするだけでなく、その数と、主要なもんの人が同一の小数点以下の桁数.そこで私hack.
private static string ConvertCustomToStandardFormat(string customFormatString)
{
if (customFormatString == null || customFormatString.Trim().Length == 0)
return null;
// Percentages do not need decimal places
if (customFormatString.EndsWith("%"))
return "{0:P0}";
int decimalPlaces = 0;
int dpIndex = customFormatString.LastIndexOf('.');
if (dpIndex != -1)
{
for (int i = dpIndex; i < customFormatString.Length; i++)
{
if (customFormatString[i] == '#' || customFormatString[i] == '0')
decimalPlaces++;
}
}
// Use system formatting for numbers, but stipulate the number of decimal places
return "{0:n" + decimalPlaces + "}";
}
これは、小数点以下2桁に番号をフォーマットするために使用されます。
string s = string.Format("{0:N2}%", x);