35

私がC#でそのようなコードを持っているとき:

double a = 0.003;
Console.WriteLine(a);

「0,003」を出力します。

別のコードがある場合:

double a = 0.003;
Console.WriteLine(a.ToString(CultureInfo.InvariantCulture));

「0.003」と表示されます。

私の問題は、小数点としてドットが必要なのに、C#がデフォルトでコンマを作成することです。さらに、double変数を出力するためだけに、このような長いコード行を入力したくありません。

4

7 に答える 7

56

現在のスレッドのカルチャを任意のカルチャに設定できます。

Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

カルチャを変更すると、文字列の比較と並べ替え、日付の形式、日付と数値の解析などにも影響することに注意してください。

于 2012-10-04T14:50:53.573 に答える
24

.NETFrameworkバージョン4.5および.NETCore/ Standard 1.0以降、 CultureInfo.DefaultThreadCurrentCultureおよびCultureInfo.DefaultThreadCurrentUICultureプロパティを変更することにより、現在のスレッドだけでなく、アプリケーション全体のカルチャを変更できます。

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;
于 2018-09-08T16:44:20.273 に答える
9

1空の文字列はInvariantCultureを指定しますconfig.file

デフォルトでは、CultureとUICultureは構成で「」に設定されています。

   <system.web>
      <globalization culture="" />
   </system.web>

2あなたはまたあなたに定義することができますThread

于 2012-10-04T14:53:38.837 に答える
6

C#はデフォルトではコンマにしません、それはあなたの文化です。文化を明確に設定してみてください、

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");

リンク: http: //msdn.microsoft.com/en-us/library/ms425914 (v = office.12).aspx

于 2012-10-04T14:51:53.643 に答える
3

あなたが電話WriteLine()してダブルを与えるとき、それは内部的に多かれ少なかれこの電話をします:

Console.WriteLine(a.ToString(CultureInfo.CurrentCulture));

タスクは、をに置き換えることCurrentCultureですInvariantCulture。これは、次のコード行で実行できます。

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

これでスレッドがInvariantCultureに設定され、最初の呼び出しでも「0.003」が出力されます。

于 2012-10-04T14:53:23.510 に答える
3

CultureInfo.InvariantCulture@Guffaらによって上記のようにデフォルトとして設定できます。

しかし、なぜこれを行うのかを明確に理解する必要があります。データのエクスポート/インポート操作を行う場合は問題ありませんが、ユーザーに表示される文字列には使用しない可能性があります。

Microsoftのドキュメントには次のように記載されています。

不変の文化は文化に影響されません。英語に関連付けられていますが、国/地域には関連付けられていません。CultureInfoインスタンス化メソッドの呼び出しで空の文字列( "")を使用して、名前で不変のカルチャを指定します。..。

ユーザーのカスタマイズまたは.NETFrameworkまたはオペレーティングシステムの更新によって変更される可能性があるカルチャに依存するデータとは異なり、不変のカルチャデータは、時間の経過とともにインストールされたカルチャ全体で安定しており、ユーザーがカスタマイズすることはできません。これにより、不変のカルチャは、フォーマットされたデータを保持するフォーマットおよび解析操作や、カルチャに関係なくデータを固定順序で表示する必要があるソートおよび順序付け操作など、カルチャに依存しない結果を必要とする操作に特に役立ちます。

于 2013-07-27T04:38:48.600 に答える
2

カルチャ固有の数値と日付のフォーマットが必要ない場合は、おそらくアプリケーションの起動時にカルチャを一度設定できます。

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture

ASP.NETアプリケーションの場合、より簡単な代替手段は<globalization>、web.configの構成要素でカルチャを設定することです。

そうしないと、カルチャを明示的に指定する以外に方法がありません。同じ長いコード行を繰り返し入力していることに気付いた場合は、この場合は常に行うことを実行してください。メソッドでラップします。

于 2012-10-04T14:53:17.647 に答える