Udostępnij za pośrednictwem


decimal (odwołanie w C#)

Słowo kluczowe decimal wskazuje typ danych 128-bitowych.W porównaniu z typami zmiennoprzecinkowymi typ decimal ma większą dokładność i mniejszy zakres, przez co jest odpowiedni do obliczeń finansowych i walutowych.Przybliżony zakres i dokładność typu decimal pokazano w poniższej tabeli.

Typ

Przybliżony zakres

Dokładność

Typ programu .NET Framework

decimal

(od -7,9 x 1028 do 7,9 x 1028) / (od 100 do 28)

28–29 cyfr znaczących

Decimal

Literały

Jeśli literał liczbowy typu real ma być traktowany jako literał typu decimal, należy użyć sufiksu m lub M, na przykład:

decimal myMoney = 300.5m;

Bez sufiksu m liczba jest traktowana jako liczba typu double i jest generowany błąd kompilatora.

Konwersje

Typy całkowite są niejawnie konwertowane na typ decimal, a obliczony wynik jest wartością typu decimal.Dlatego można zainicjować zmienną typu decimal, używając literału typu integer, bez konieczności użycia sufiksu, tak jak pokazano poniżej:

decimal myMoney = 300;

Nie istnieje niejawna konwersja między typami zmiennoprzecinkowymi a typem decimal, dlatego należy użyć rzutowania, aby wykonać konwersję między tymi dwoma typami.Na przykład:

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

Typu decimal i liczbowych typów całkowitych można używać razem w jednym wyrażeniu.Jednak jednoczesne użycie typu decimal i typów zmiennoprzecinkowych bez użycia rzutowania spowoduje błąd kompilatora.

Aby uzyskać więcej informacji dotyczących niejawnych konwersji liczbowych, zobacz Tabela niejawnych konwersji liczbowych (odwołanie w C#).

Aby uzyskać więcej informacji dotyczących jawnych konwersji liczbowych, zobacz Tabela jawnych konwersji liczbowych (odwołanie w C#).

Formatowanie danych wyjściowych typu decimal

Wyniki można formatować ze pomocą metody String.Format lub metody Console.Write, która wywołuje metodę String.Format().Format waluty jest określany przy użyciu standardowego ciągu formatu walutowego (C lub c), tak jak pokazano w drugim przykładzie w dalszej części tego artykułu.Aby uzyskać więcej informacji dotyczącej metody String.Format, zobacz String.Format.

Przykład

W poniższym przykładzie występuje błąd kompilatora spowodowany próbą dodania do siebie zmiennych typu double i 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);

Wynikiem jest następujący błąd:

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

W tym przykładzie typy decimal i int są używane razem w jednym wyrażeniu.Obliczony wynik jest wartością typu 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

W tym przykładzie dane wyjściowe są formatowane przy użyciu ciągu formatu walutowego.Należy zauważyć, że wartość x jest zaokrąglana, ponieważ liczba miejsc dziesiętnych przekracza wartość 0,99 PLN.Zmienna y, która przedstawia maksymalną dokładną liczbę cyfr, jest wyświetlana dokładnie w poprawnym formacie.

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

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.

Zobacz też

Informacje

Słowa kluczowe języka C#

Tabela typów całkowitych (odwołanie w C#)

Tabela typów wbudowanych (odwołanie w C#)

Tabela niejawnych konwersji liczbowych (odwołanie w C#)

Tabela jawnych konwersji liczbowych (odwołanie w C#)

Decimal

Koncepcje

Przewodnik programowania w języku C#

Standardowe ciągi formatujące liczby

Inne zasoby

Odwołanie w C#