Sdílet prostřednictvím


decimal (Referenční dokumentace jazyka C#)

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

Typ

Přibližný rozsah

Přesnost

Typ rozhraní .NET Framework

decimal

(-7.9 x 1028 až 7.9 x 1028) / (100 až 28)

28–29 významných číslic

Decimal

Literály

Pokud chcete, aby číselný literál reálného čísla byl považován za typ decimal, použijte příponu m nebo M, například:

decimal myMoney = 300.5m;

Bez přípony m je číslo považováno za typ double a vyvolá chybu při kompilaci.

Převody

Integrální typy jsou implicitně převedeny na typ decimal a výsledek je vyhodnocen jako typ decimal.Z tohoto důvodu můžete inicializovat proměnnou desítkového čísla pomocí celočíselného literálu bez přípony, a to následovně:

decimal myMoney = 300;

Neexistuje žádný implicitní převod mezi typy s plovoucí desetinnou čárkou a typem decimal; proto převod mezi těmito dvěma typy vyžaduje přetypování.Příklad:

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

Ve stejném výrazu můžete také zkombinovat typ decimal a numerické integrální typy.Kombinace typu decimal a typů s plovoucí desetinnou čárkou bez přetypování způsobí chybu kompilace.

Další informace o implicitním číselném převodu naleznete v tématu Tabulka implicitních číselných převodů (Referenční dokumentace jazyka C#).

Další informace o explicitním číselném převodu naleznete v tématu Tabulka explicitních číselných převodů (Referenční dokumentace jazyka C#).

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

Výsledek můžete naformátovat pomocí metody String.Format nebo prostřednictvím metody Console.Write, která volá formát String.Format().Formát měny je určen pomocí řetězce standardního formátu měny "C" nebo "c", jak je uvedeno 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

Následující příklad způsobí chybu při kompilaci přidáním proměnných double a decimal.

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 následující chyba:

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

V tomto příkladu jsou typy decimal a int zkombinovány do stejného výrazu.Výsledek je vyhodnocen jako typ 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 je výstup naformátován pomocí řetězce formátu měny.Hodnota x je zaokrouhlena, protože desetinná místa překračují hodnotu $0.99.Proměnná y, která představuje maximální přesné číslice, 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 najdete 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#

Tabulka celočíselných typů (Referenční dokumentace jazyka C#)

Tabulka předdefinovaných typů (Referenční dokumentace jazyka C#)

Tabulka implicitních číselných převodů (Referenční dokumentace jazyka C#)

Tabulka explicitních číselných převodů (Referenční dokumentace jazyka C#)

Decimal

Koncepty

Průvodce programováním v C#

Standardní řetězce formátu čísla

Další zdroje

Referenční dokumentace jazyka C#