次のような数値を返すメソッドがあります。
public decimal GetNumber()
{
return 250.00m;
}
たとえば、この値がコンソールに出力されると、ポイント(250.00)ではなくコンマ(250,00)が表示されます。私はいつもここでポイントが欲しいのですが、何が間違っているのですか?
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);
}
}
Jon Skeetが説明したように、string
のフォーマットに使用するカルチャを指定する必要があります。
var str = GetNumber().ToString(System.Globalization.CultureInfo.InvariantCulture);
カルチャを指定する際には、常にToString
オーバーロードを使用することをお勧めします。さもないと、 .NET
現在のスレッドCulture
を使用します。これにより、strings
..のロケールに応じて異なるPC
が出力に書き込まれます。
ロケール固有のフォーマット?
http://en.wikipedia.org/wiki/File:DecimalSeparator.svg (緑はコンマに等しいので、のカルチャ情報を使用して小数点でToString()
を呼び出す場合これらの場所のいずれかに、コンマが表示されます)。
Visual Studio 2008(コンソールアプリケーション)で確認しましたが、「。」ではなく「、」が表示されていません。 、詳細をお知らせください。文化情報の問題だと思います。コードの詳細をもう少し入力してください
class Program
{
static void Main(string[] args)
{
Console.Write(GetNumber());
}
public static decimal GetNumber()
{
return 250.00m;
}
}