webentwicklung-frage-antwort-db.com.de

C # -Dezimaltrennzeichen?

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?

15
grady

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);
    }
}
49
Jon Skeet

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.

7
Eilistraee

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).

1
Tim Medora

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;
    }

}
0