Udostępnij za pośrednictwem


Typ danych dziesiętny (Visual Basic)

Posiada podpisane 128-bitowe (16-bajtowy) wartości zapisu liczb integer (12 bajtów) 96-bitowym skalowana przez zmienną potęgi liczby 10.Współczynnik skalowania określa liczbę cyfr po prawej stronie przecinka dziesiętnego; to zakres od 0 do 28.O skali 0 (bez miejsc dziesiętnych), największą wartością, możliwe jest /-79,228,162,514,264,337,593,543,950,335 (+/-7 .9228162514264337593543950335E + 28).Z 28 miejscami po przecinku największą wartością jest /-7.9228162514264337593543950335, a najmniejszą wartość różną od zera jest /-0,0000000000000000000000000001 (/-1E-28).

Uwagi

Decimal Typ danych zapewnia największą liczbę cyfr znaczących dla wielu.Obsługuje maksymalnie 29 cyfr znaczących i może reprezentować wartości przewyższająca 7.9228 x 10^28.To jest szczególnie odpowiednie do obliczeń, takich jak finansowych, które wymagają dużej liczby cyfr ale nie można tolerować błędy zaokrąglania.

Domyślna wartość Decimal jest 0.

Porady dotyczące programowania

  • **Precyzja.**Decimal nie jest to typ danych zmiennoprzecinkowych. Decimal Struktury posiada wartość całkowitą binarne, bit znaku i całkowitą skalowanie czynnikiem, który określa, jaka część wartości dziesiętne.W związku z tym Decimal numery mają bardziej dokładne odwzorowanie w pamięci niż typu zmiennoprzecinkowego (Single i Double).

  • **Wydajność.**Decimal Typ danych jest najwolniejszy ze wszystkich typów liczbowych.Należy zważyć znaczenie precyzji przeciwko wydajności przed wyborem typu danych.

  • Rozszerzenie. The Decimal data type widens to Single or Double.Oznacza to, można przekonwertować Decimal do jednej z tych typów, bez System.OverflowException błąd.

  • Końcowe zera. Visual Basic nie przechowuje końcowe zera w Decimal literału.Jednakże Decimal zmienna zachowuje końcowe zera nabyte w praktyce.Poniższy przykład ilustruje to.

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

    Wyjście z MsgBox w poprzednim przykładzie jest następująca:

    D1 = 2.375, d2 = 1.625, d3 = 4000, d4 = 4

  • Wpisz znaki. Dołączanie znaków literału typu D do literału wymusza Decimal typ danych.Dołączanie znaków identyfikatora typu @ dla wszystkich identyfikatorów wymusza Decimal.

  • Typ RAM. Jest odpowiedni typ w.NET Framework System.Decimal struktury.

Zakres

Należy użyć D wpisz znak, który ma dużą wartość, aby przypisać Decimal stała lub zmienna.Jest to wymaganie, ponieważ kompilator interpretuje jako literał Long chyba, że znak literału typu następuje dosłowne, jak pokazano w następującym 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 nie produkują przepełnienie, ponieważ wartość, która jest przypisana do niego mieści się w zakresie dla Long.Long Wartości mogą być przypisane do Decimal zmiennej.

Deklaracja dla bigDec2 generuje błąd przepełnienia, ponieważ wartość, która jest przypisana do niego jest za duży dla Long.Ponieważ literału numerycznego, po raz pierwszy nie może być interpretowane jako Long, nie może być przypisany do Decimal zmiennej.

Dla bigDec3, postać literału typu D rozwiązuje problem, zmuszając kompilator interpretować jako literał Decimal a nie jako Long.

Zobacz też

Informacje

Podsumowanie typów danych (Visual Basic)

System.Decimal

Decimal.Decimal

Pojedynczy typ danych (Visual Basic)

Podwójne typ danych (Visual Basic)

Funkcje konwersji typu (Visual Basic)

Podsumowanie konwersji (Visual Basic)

Math.Round

Koncepcje

Efektywne wykorzystanie typów danych (Visual Basic)