Ich habe eine Methode, die Zahlen wie folgt zurückgibt:
public decimal GetNumber()
{
return 250.00m;
}
Wenn dieser Wert zum Beispiel auf der Konsole ausgegeben wird, hat er ein Komma (250,00) anstelle eines Punktes (250,00). Ich möchte immer einen Punkt hier, was mache ich falsch?
decimal
selbst hat keine Formatierung - weder ein Komma noch ein Punkt.
Wenn Sie es in eine Zeichenfolge konvertieren, erhalten Sie das. Sie können sicherstellen, dass Sie einen Punkt erhalten, indem Sie die invariante Kultur angeben:
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);
}
}
Wie von Jon Skeet erläutert, sollten Sie die Kultur angeben, die zum Formatieren der string
verwendet wird:
var str = GetNumber().ToString(System.Globalization.CultureInfo.InvariantCulture);
Es empfiehlt sich, immer die ToString
-Überladung zu verwenden, in der Sie die Kultur angeben. Andernfalls verwenden Sie .NET
den aktuellen Thread Culture
, der je nach dem Gebietsschema der strings
... unterschiedliche PC
in die Ausgabe schreiben würde.
Gebietsschema-spezifische Formatierung
http://en.wikipedia.org/wiki/File:DecimalSeparator.svg (Grün ist ein Komma. Wenn Sie also ToString()
auf Ihrer Dezimalstelle mit den Kulturinformationen einer dieser Stellen aufrufen, wird ein angezeigt Komma).
Ich habe es mit Visual Studio 2008 (Konsolenanwendung) überprüft und es wird nicht "," anstelle von "." Angezeigt. Bitte geben Sie weitere Details an. Ich denke, es ist das Thema Kultur-Info. Bitte geben Sie weitere Code-Details an
class Program
{
static void Main(string[] args)
{
Console.Write(GetNumber());
}
public static decimal GetNumber()
{
return 250.00m;
}
}