web-dev-qa-db-ja.com

double.ToString()の小数点の記号を変更するには?

C#で小数点を別の文字に変更したいと思います。 double変数valueがあります

double value;

そして、私がコマンドを使用するとき:

Console.WriteLine(value.ToString()); // output is 1,25

私はこれができることを知っています:

Console.WriteLine(value.ToString(
    CultureInfo.CreateSpecificCulture("en-GB"))); // output is 1.25

しかし、私はそれが非常に好きではありません。なぜならそれは非常に長く、私のプログラムで非常に頻繁に必要になるからです。

「小数点」を実際にポイントとして設定するための短いバージョンがあり、私の文化では通常のカンマではありませんか?

53
Martin Vseticka

いくつかのショートカットは、NumberFormatInfoクラスを作成し、そのNumberDecimalSeparatorプロパティを「。」に設定することです。そして、必要なときはいつでもToString()メソッドのパラメーターとしてクラスを使用します。

using System.Globalization;

NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";

value.ToString(nfi);
111
romanz

拡張メソッドを作成しますか?

Console.WriteLine(value.ToGBString());

// ...

public static class DoubleExtensions
{
    public static string ToGBString(this double value)
    {
        return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
    }
}
34
LukeH

おそらく、あなたの質問の意図を誤解しているので、間違っている場合は修正しますが、文化設定を一度グローバルに適用して、すべての書き込みステートメントをカスタマイズする心配はありませんか?

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
18
womp

数値の表示に使用されるカルチャを変更することにより、小数点記号を変更できます。ただし、これにより、数値に関するその他すべてが変更されることに注意してください(グループ化区切り、グループ化サイズ、小数点以下の桁数など)。あなたの質問から、コンマを小数点記号として使用するカルチャにデフォルト設定しているように見えます。

カルチャを変更せずに小数点記号を変更するjustには、現在の NumberDecimalSeparator プロパティを変更できますカルチャの NumberFormatInfo

_Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
_

これにより、スレッドの現在のカルチャが変更されます。これで、すべての出力が変更されます。つまり、数値を出力するたびにカルチャを変更することを心配せずに、value.ToString()を使用して目的の形式を出力できます。

中立 カルチャの小数点記号を変更できないことに注意してください。)

14
adrianbanks
Convert.ToString(value, CultureInfo.InvariantCulture);
1
toree

Asp.Net Webアプリケーションがある場合は、web.config Webアプリケーション全体で同じになるように

<system.web>
    ...
    <globalization 
        requestEncoding="utf-8" 
        responseEncoding="utf-8" 
        culture="en-GB" 
        uiCulture="en-GB" 
        enableClientBasedCulture="false"/>
    ...
</system.web>
1
JP Hellemons