web-dev-qa-db-ja.com

doubleをN個の小数点、小数点としてドットを使用し、桁区切りなしの文字列に変換

小数点をN桁(2桁または4桁)で千単位の区切り文字を持たない文字列に変換する必要があります。

「XXXXXXX(ドット)DDDDD」

CultureInfo.InvariantCultureの問題は、数千を区切る場所 '、'であるということです。

更新

これは、decimal型およびdouble型で機能するはずです。


私の前の質問:doubleまたはdecimalを文字列に変換する必要があります

48
Captain Comic

decimalの場合、ToStringメソッドを使用し、Invariantカルチャを指定して、小数点としてピリオドを取得します。

value.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)

longタイプは整数であるため、小数部はありません。それを文字列にフォーマットし、その後いくつかのゼロを追加することができます:

value.ToString() + ".00"
96
Guffa

独自の小数点記号を指定するのは本当に簡単です。それを理解するのに約2時間かかりました:D。あなたは、あなたが現在指定している他の文化を使用していることがわかりますか?さて、パーサーに必要なのはIFormatProviderだけです。 CultureInfo.CurrentCulture.NumberFormatフォーマッタとして、現在のカルチャのNumberDecimalSeparatorに従ってdoubleをフォーマットします。私がやったのは、NumberFormatInfoクラスの新しいインスタンスを作成し、NumberDecimalSeparatorプロパティに必要なセパレータ文字列を設定するだけでした。以下の完全なコード:

double value = 2.3d;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = "-";
string x = value.ToString(nfi);

結果? 「2-3」

34
Pedro Santos

ToString()IFormatProviderを使用することを好みます。

double value = 100000.3
Console.WriteLine(value.ToString("0,0.00", new CultureInfo("en-US", false)));

出力: 10,000.30

3
Makah