1

以下のような文字列フォーマット用のコード行があります-

double dVal = Convert.ToDouble(args[0], 
                              System.Globalization.CultureInfo.InvariantCulture);
string result = string.Format("{0}", dVal);

現在、他のロケール(ドイツ語やフランス語など)では、result文字列に「。」ではなく「、」が含まれています。これは予想される動作です。

「。」で二重の価値を維持するために追加できるものはありますか。「、」が含まれていませんか?

4

3 に答える 3

1

現在のNumberFormatInfoオブジェクトを変更して、10進数の区切り記号を必要な区切り記号に明示的に設定できます。

そのような何かがトリックを行う必要があります:

double dVal = Convert.ToDouble(args[0],
                                  System.Globalization.CultureInfo.InvariantCulture);

var nfi = NumberFormatInfo.CurrentInfo.Clone() as NumberFormatInfo;
nfi.NumberDecimalSeparator = ".";

string result = string.Format(nfi, "{0}", dVal);

NumberFormatInfoプロパティは読み取り専用であるため、クローンを作成する必要があることに注意してください。

于 2012-12-17T06:34:03.113 に答える
1

文字列をフォーマットするときは、英語の文化を明示的に使用してください。文字列を解析する他のアプリケーションとのラウンドトリップに必要な場合は、すでに解析した場合と同じように、不変カルチャを使用します。

于 2012-12-17T06:38:51.770 に答える
0

String.Replace'、'が含まれていなくてもかまわないので、そのまま使用できます。

double dVal = Convert.ToDouble(args[0], System.Globalization.CultureInfo.InvariantCulture);
string result =  dVal.ToString().Replace(',','.');

最善の解決策ではありませんが、迅速かつ簡単です:)

于 2012-12-17T06:37:17.900 に答える