Sdílet prostřednictvím


desetinné (C#-Reference)

decimal Klíčové slovo označuje typ dat 128bitové.Ve srovnání s typy s plovoucí desetinnou čárkou, decimal typ má více přesnosti a menší rozsah je vhodné pro měnovou a finanční výpočty.Přibližný rozsah a přesnost decimal typu jsou uvedeny v následující tabulce.

Type

Přibližný rozsah

Přesnost

typ .NET Framework

decimal

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

28 29 významné číslice

System.Decimal

Literály

Chcete-li číselný literál reálného čísla jako decimal, použijte příponu m nebo M, například:

decimal myMoney = 300.5m;

Bez přípony m číslo zachází jako dvojité a vygeneruje chybu kompilátoru.

Převody

Integrální typy jsou implicitně převést na decimal a výsledek je vyhodnocen jako decimal.Proto můžete inicializovat desítkové proměnné pomocí celé literál bez přípony, takto:

decimal myMoney = 300;

Neexistuje žádný implicitní převod mezi typy s plovoucí desetinnou čárkou a decimal zadejte; Proto musíte použít přetypování převod mezi těmito dvěma typy.Příklad:

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

Je možné použít decimal a ve stejném výrazu číselnou integrální typy.Míchání však decimal a typy s plovoucí desetinnou čárkou bez přetypování způsobí chybu kompilace.

Další informace o implicitní číselný převod, viz Implicitní číselné tabulky převody (C#-Reference).

Další informace o explicitní převody číselných viz Explicitní číselné tabulky převody (C#-Reference).

Formátování výstupu desítkové

Výsledky můžete formátovat pomocí String.Format metodu, nebo až Console.Write metoda, která volá String.Format().Formát měny je určena pomocí měny standardní formátovací řetězec "C" nebo "c" jako v druhém příkladu dále v tomto článku.Další informace o metodě String.Format naleznete v tématu String.Format.

Příklad

V tomto příkladu decimal a int se míchají ve stejném výrazu.Výsledek se vyhodnotí decimal typu.

V následujícím příkladu způsobí chybu kompilátoru v pokusu o přidání dvojité a decimal proměnné.

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

Výsledkem je chybová zpráva:

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

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

V tomto příkladu výstup je formátován pomocí řetězce formátu měny.Všimněte si, že x je zaokrouhlena, protože $0.99 překročit počet desetinných míst.Proměnná y, která představuje maximální přesné číslic se zobrazí přesně ve správném formátu.

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
*/

Specifikace jazyka C#

Další informace naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také

Referenční dokumentace

Klíčová slova jazyka C#

Nedílnou tabulky typy (C#-Reference)

Předdefinované typy (C#-Reference)

Implicitní číselné tabulky převody (C#-Reference)

Explicitní číselné tabulky převody (C#-Reference)

Decimal

Koncepty

Příručka programování C#

Standardní číselné formátovací řetězce

Další zdroje

C#-Reference