Dezimalzahl
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

decimal (C#-Referenz)

 

Das decimal-Schlüsselwort kennzeichnet einen 128-Bit-Datentyp. Im Vergleich zu Gleitkommatypen verfügt der decimal-Typ über eine höhere Genauigkeit und einen kleineren Wertebereich. Dadurch eignet er sich für Finanz- und Währungskalkulationen. Der folgenden Tabelle können Sie den ungefähren Bereich und die Genauigkeit des decimal-Typs entnehmen.

Type

Ungefährer Bereich

Precision

.NET Framework-Typ

Dezimalwerttypen

(-7.9 x 1028 bis 7.9 x 1028) / (100 bis 28)

28-29 signifikante Stellen

System.Decimal

Wenn ein echtes numerisches Literal als decimal behandelt werden soll, verwenden Sie das Suffix m oder M. Beispiel:


decimal myMoney = 300.5m;

Ohne das Suffix m wird die Zahl als double behandelt, was zu einem Compilerfehler führt.

Die ganzzahligen Typen werden implizit in decimal konvertiert, und das Ergebnis wird als decimal ausgewertet.Aus diesem Grund können Sie eine decimal-Variable mit einem Ganzzahlliteral ohne das Suffix initialisieren. Beispiel:


decimal myMoney = 300;

Es findet keine implizite Konvertierung zwischen Gleitkommatypen und dem decimal-Typ statt. Folglich muss die Konvertierung zwischen diesen beiden Typen mittels einer Typumwandlung durchgeführt werden. Zum Beispiel:


        decimal myMoney = 99.9m;
double x = (double)myMoney;
myMoney = (decimal)x;

decimal-Typen und numerische ganzzahlige Typen können auch gemeinsam im selben Ausdruck verwendet werden.Wenn Sie jedoch Gleitkomma- und decimal-Typen ohne Typumwandlung in einem Ausdruck verwenden, tritt ein Kompilierungsfehler auf.

Weitere Informationen zu impliziten numerischen Konvertierungen finden Sie unter Tabelle für implizite numerische Konvertierungen (C#-Referenz).

Weitere Informationen zu expliziten numerischen Konvertierungen finden Sie unter Tabelle für explizite numerische Konvertierungen (C#-Referenz).

Sie können die Ergebnisse mithilfe der String.Format-Methode oder der Console.Write-Methode formatieren, durch die String.Format() aufgerufen wird.Das Währungsformat wird mit der Standardwährungsformat-Zeichenfolge "C" oder "c" angegeben, wie in Beispiel 2 weiter unten in diesem Artikel dargestellt.Weitere Informationen zur String.Format-Methode finden Sie unter String.Format.

Im folgenden Beispiel wird ein Compilerfehler aufgrund des Versuchs verursacht, Double- und decimal-Variablen hinzuzufügen.

double dub = 9;
// The following line causes an error that reads "Operator '+' cannot be applied to 
// operands of type 'double' and 'decimal'"
Console.WriteLine(dec + dub); 

// You can fix the error by using explicit casting of either operand.
Console.WriteLine(dec + (decimal)dub);
Console.WriteLine((double)dec + dub);

Das Ergebnis ist der folgende Fehler:

Operator '+' cannot be applied to operands of type 'double' and 'decimal'

In diesem Beispiel werden decimal und int in demselben Ausdruck verwendet.Das Ergebnis wird als decimal-Typ ausgewertet.

public class TestDecimal
{
    static void Main()
    {
        decimal d = 9.1m;
        int y = 3;
        Console.WriteLine(d + y);   // Result converted to decimal
    }
}
// Output: 12.1

In diesem Beispiel wird die Ausgabe mit der Währungsformatzeichenfolge formatiert.Beachten Sie, dass x gerundet wird, da mehr Dezimalstellen als im Format $0.99 vorhanden sind.Die Variable y, die die maximale Anzahl exakter Stellen darstellt, wird genau im richtigen Format angezeigt.

public class TestDecimalFormat
{
    static void Main()
    {
        decimal x = 0.999m;
        decimal y = 9999999999999999999999999999m;
        Console.WriteLine("My amount = {0:C}", x);
        Console.WriteLine("Your amount = {0:C}", y);
    }
}
/* Output:
    My amount = $1.00
    Your amount = $9,999,999,999,999,999,999,999,999,999.00
*/

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Anzeigen:
© 2016 Microsoft