web-dev-qa-db-ja.com

C#小数点区切り文字?

次のような数値を返すメソッドがあります。

public decimal GetNumber()
{
    return 250.00m;
}

たとえば、この値がコンソールに出力されると、ポイント(250.00)ではなくコンマ(250,00)が表示されます。私はいつもここでポイントが欲しいのですが、何が間違っているのですか?

15
grady

decimal自体にはフォーマットがありません。コンマもドットもありません。

それを文字列に変換すると、それが得られます。不変のカルチャを指定することで、確実にドットを取得できます。

using System;
using System.Globalization;
using System.Threading;

class Test
{
    static void Main()
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
        decimal d = 5.50m;
        string withComma = d.ToString();
        string withDot = d.ToString(CultureInfo.InvariantCulture);
        Console.WriteLine(withComma);
        Console.WriteLine(withDot);
    }
}
49
Jon Skeet

Jon Skeetが説明したように、stringのフォーマットに使用するカルチャを指定する必要があります。

var str = GetNumber().ToString(System.Globalization.CultureInfo.InvariantCulture);

カルチャを指定する際には、常にToStringオーバーロードを使用することをお勧めします。さもないと、 .NET現在のスレッドCultureを使用します。これにより、strings ..のロケールに応じて異なるPCが出力に書き込まれます。

7
Eilistraee

ロケール固有のフォーマット?

http://en.wikipedia.org/wiki/File:DecimalSeparator.svg (緑はコンマに等しいので、のカルチャ情報を使用して小数点でToString()を呼び出す場合これらの場所のいずれかに、コンマが表示されます)。

1
Tim Medora

Visual Studio 2008(コンソールアプリケーション)で確認しましたが、「。」ではなく「、」が表示されていません。 、詳細をお知らせください。文化情報の問題だと思います。コードの詳細をもう少し入力してください

class Program
{
    static void Main(string[] args)
    {
        Console.Write(GetNumber());
    }
    public static  decimal GetNumber()
    {
        return 250.00m;
    }

}
0