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 |
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
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)
Koncepty
Standardní číselné formátovací řetězce