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. StrukturaDecimal
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ůvoduDecimal
mají čísla přesnější reprezentaci v paměti než typy s plovoucí desetinou čárkou (Single
aDouble
).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 naSingle
neboDouble
. To znamená, že můžete převéstDecimal
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émuDecimal
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