Udostępnij za pośrednictwem


Decimal — Typ danych (Visual Basic)

Zawiera podpisane 128-bitowe (16-bajtowe) wartości reprezentujące 96-bitowe (12-bajtowe) liczby całkowite skalowane przez zmienną moc 10. Współczynnik skalowania określa liczbę cyfr po prawej stronie przecinka dziesiętnego; waha się od 0 do 28. Przy skali 0 (bez miejsc dziesiętnych), największą możliwą wartością jest +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9228162514264337593543950335E+28). W przypadku 28 miejsc dziesiętnych największa wartość to +/-7.922816251426437593543950335, a najmniejsza wartość niezerowa to +/-0,000000000000000000000000001 (+/-1E-28).

Uwagi

Typ Decimal danych zapewnia największą liczbę cyfr znaczących dla liczby. Obsługuje maksymalnie 29 cyfr znaczących i może reprezentować wartości przekraczające 7,9228 x 10^28. Szczególnie nadaje się do obliczeń, takich jak finanse, które wymagają dużej liczby cyfr, ale nie mogą tolerować błędów zaokrąglania.

Wartość domyślna to Decimal 0.

porady dotyczące programowania

  • Precyzja.Decimal nie jest typem danych zmiennoprzecinkowych. Struktura Decimal zawiera binarną wartość całkowitą wraz z bitem znaku i współczynnikiem skalowania liczby całkowitej określającym, jaka część wartości jest ułamkiem dziesiętnym. W związku z tym Decimal liczby mają bardziej precyzyjną reprezentację w pamięci niż typy zmiennoprzecinkowe (Single i Double).

  • Wydajność. Typ Decimal danych jest najwolniejszy ze wszystkich typów liczbowych. Przed wybraniem typu danych należy rozważyć znaczenie dokładności względem wydajności.

  • Poszerzenie. Decimal Typ danych rozszerza się do Single lub Double. Oznacza to, że można przekonwertować Decimal na jeden z tych typów bez napotkania błędu System.OverflowException .

  • Końcowe zera. Visual Basic nie przechowuje końcowych zer w Decimal literału. Jednak zmienna Decimal zachowuje wszystkie końcowe zera uzyskane obliczenia. Ilustruje to poniższy przykład.

    Dim d1, d2, d3, d4 As Decimal
    d1 = 2.375D
    d2 = 1.625D
    d3 = d1 + d2
    d4 = 4.000D
    MsgBox("d1 = " & CStr(d1) & ", d2 = " & CStr(d2) &
          ", d3 = " & CStr(d3) & ", d4 = " & CStr(d4))
    

    Dane wyjściowe MsgBox z poprzedniego przykładu są następujące:

    d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4
    
  • Wpisz znaki. Dołączanie znaku D typu literału do literału wymusza jego Decimal typ danych. Dołączanie znaku @ typu identyfikatora do dowolnego identyfikatora wymusza jego wartość .Decimal

  • Typ struktury. Odpowiedni typ w programie .NET Framework jest strukturą System.Decimal .

Zakres

Może być konieczne użycie D znaku typu w celu przypisania dużej wartości do zmiennej lub stałej Decimal . To wymaganie jest spowodowane tym, że kompilator interpretuje literał jako Long , chyba że znak typu literału jest zgodny z literałem, jak pokazano w poniższym przykładzie.

Dim bigDec1 As Decimal = 9223372036854775807   ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808   ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D  ' No overflow.

Deklaracja dla bigDec1 elementu nie generuje przepełnienia, ponieważ wartość przypisana do niej mieści się w zakresie .Long Wartość Long można przypisać do zmiennej Decimal .

Deklaracja dla bigDec2 generuje błąd przepełnienia, ponieważ wartość przypisana do niej jest zbyt duża dla elementu Long. Ponieważ literał liczbowy nie może być najpierw interpretowany jako , Longnie można go przypisać do zmiennej Decimal .

W przypadku bigDec3elementu znak D typu literału rozwiązuje problem, zmuszając kompilatora do interpretacji literału jako Decimal zamiast jako Long.

Zobacz też