Decimal – datový typ (Visual Basic)

Obsahuje podepsané 128 hodnoty (16 bajtů) představující 96-bit (12 bajtů) celočíselných čísel, jejichž velikost se škáluje proměnnou výkonem 10. Faktor škálování určuje počet číslic vpravo od desetinné čárky. Rozsah je 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,543,950,335 (+/-7.9228162514264337593543950335E + 28). S 28 desetinnými místy je největší hodnota +/-7.9228162514264337593543950335 a nejmenší nenulová hodnota je +/-0,0000000000000000000000000001 (+/-1E-28).

Poznámky

DecimalDatový typ poskytuje největší počet platných číslic pro číslo. Podporuje až 29 platných číslic a může reprezentovat hodnoty převyšující 7,9228 × 10 ^ 28. Je zvláště vhodná pro výpočty, jako je finanční, které vyžadují velký počet číslic, ale nemůžou tolerovat chyby při zaokrouhlování.

Výchozí hodnota Decimal je 0.

Tipy k programování

  • Číslic. Decimal není datový typ s plovoucí desetinnou čárkou. DecimalStruktura obsahuje binární celočíselnou hodnotu společně s bitem znaménka a koeficientem škálování celého čísla, který určuje, jaká část hodnoty je desítkový zlomek. Z tohoto důvodu Decimal čísla mají přesnější reprezentace v paměti než typy s plovoucí desetinnou čárkou ( Single a Double ).

  • Předepsané. DecimalDatový 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 oproti výkonu.

  • Rozšiřující. DecimalDatový typ se rozšíří na Single nebo Double . To znamená, že můžete převést Decimal na některý z těchto typů bez výskytu System.OverflowException chyby.

  • Koncové nuly. Visual Basic neukládá koncové nuly v Decimal literálu. Nicméně Decimal Proměnná zachovává všechny koncové nuly získané výpočty. 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
    
  • Znaky typu. Připojení znaku literálového typu D k literálu vynutí tento Decimal datový typ. Připojení znaku typu identifikátoru @ k jakémukoli identifikátoru vynutí Decimal .

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

Rozsah

Je možné, že budete muset použít D znak typu pro přiřazení velké hodnoty Decimal proměnné nebo konstantě. Tento požadavek je způsoben tím, že kompilátor interpretuje literál Long , jako by literální znak typu literálu nenásleduje literál, 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 nemá za následek přetečení, protože hodnota, která je přiřazena, spadá do rozsahu pro Long . LongHodnota může být přiřazena Decimal proměnné.

Deklarace pro bigDec2 vygeneruje chybu přetečení, protože hodnota, která je přiřazena, je pro hodnotu příliš velká Long . Vzhledem k tomu, že číselný literál nemůže být nejdříve interpretován jako a Long , nelze jej přiřadit Decimal proměnné.

Pro bigDec3 je znak literálového typu D vyřeší problém tím, že vynutí kompilátor interpretovat literál jako Decimal místo jako Long .

Viz také