Decimal – datový typ (Visual Basic)

Obsahuje 128bitové 128bitové (16bajtů) hodnoty představující 96bitová (12bajtů) celočíselná čísla škálovaná proměnným výkonem 10. Koeficient měřítka určuje počet číslic napravo od desetinné čárky; pohybuje od 0 do 28. S měřítkem 0 (bez desetinných míst) je největší možná hodnota +/-79 228 162 514 264 337 593 5 43 950 335 (+/-7,9228162514264337593543950335E+28). S 28 desetinnými místy je největší hodnota +/-7,922816251426437593543950335 a nejmenší nenulová hodnota je +/-0,000000000000000000000000000000 (+/-1E-28).

Poznámky

Datový Decimal typ poskytuje největší počet významných číslic pro číslo. Podporuje až 29 platných číslic a může představovat hodnoty nad 7,9228 x 10^28. Je vhodný zejména pro výpočty, jako je finanční, které vyžadují velký počet číslic, ale nemohou tolerovat chyby zaokrouhlení.

Výchozí hodnota Decimal je 0.

Tipy k programování

  • Přesnost.Decimal není datový typ s plovoucí desetinou čárkou. Struktura Decimal obsahuje binární celočíselnou hodnotu spolu s bitem znaménka a celočíselnou škálovací hodnotou, která určuje, jaká část hodnoty je desetinná desetinná čárka. Z tohoto důvodu Decimal mají čísla přesnější reprezentaci v paměti než typy s plovoucí desetinou čárkou (Single a Double).

  • Výkon. Datový Decimal typ je nejpomalejší ze všech číselných typů. Před výběrem datového typu byste měli zvážit důležitost přesnosti proti výkonu.

  • Rozšiřování. Datový Decimal typ se rozšiřuje na Single nebo Double. To znamená, že můžete převést Decimal na některý z těchto typů, aniž byste narazili na System.OverflowException chybu.

  • Koncové nuly. Visual Basic neukládá koncové nuly v literálu Decimal . Proměnná Decimal však zachovává všechny koncové nuly získané výpočetně. Toto dokládá následující příklad.

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

    Výstup MsgBox v předchozím příkladu je následující:

    d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4
    
  • Zadejte znaky. Když k literálu připojíte znak D literálu, vynutíte ho k datovému Decimal typu. Připojení znaku @ typu identifikátoru k libovolnému identifikátoru ho vynutí .Decimal

  • Typ architektury. Odpovídající typ v rozhraní .NET Framework je System.Decimal struktura.

Rozsah

K přiřazení velké hodnoty Decimal proměnné nebo konstanty může být potřeba použít D znak typu. Tento požadavek spočívá v tom, že kompilátor interpretuje literál, jako Long kdyby znak literálového typu neslouží literálu, jak ukazuje následující příklad.

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

Deklarace pro bigDec1 negeneruje přetečení, protože hodnota, která je k ní přiřazena, spadá do rozsahu pro Long. Hodnotu Long lze přiřadit proměnné Decimal .

Deklarace pro bigDec2 vygeneruje chybu přetečení, protože hodnota, která je k ní přiřazena, je příliš velká pro Long. Vzhledem k tomu, že číselný literál nelze nejprve interpretovat jako argument Long, nelze ho Decimal přiřadit k proměnné.

Pro bigDec3, literál typ znak D řeší problém vynucením kompilátoru interpretovat literál jako místo Decimal jako .Long

Viz také