Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Decimalnení datový typ s plovoucí desetinou čárkou. StrukturaDecimalobsahuje 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ůvoduDecimalmají čísla přesnější reprezentaci v paměti než typy s plovoucí desetinou čárkou (SingleaDouble).Výkon. Datový
Decimaltyp 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ý typ
Decimallze převést naSingleneboDouble, aniž by došlo k chybě System.OverflowException. Tento převod však může vést ke ztrátě přesnosti , protožeSingleaDoubleupřednostňují větší hodnoty před zachováním přesnosti.
Dim decimalValue As Decimal = 1234567890123456789012345D
Dim doubleValue As Double = CDbl(decimalValue)
Console.WriteLine("Decimal value: " & decimalValue)
Console.WriteLine("Double value: " & doubleValue)
Výstup předchozího příkladu ukazuje, že Desetinná hodnota zachovává úplnou přesnost, zatímco Dvojitá hodnota ztratí přesnost z důvodu omezení datového typu Double.
Decimal value: 1234567890123456789012345
Double value: 1.23456789012346E+24
Koncové nuly. Visual Basic neukládá koncové nuly v literálu
Decimal. ProměnnáDecimalvš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
MsgBoxv předchozím příkladu je následující:d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4Zadejte znaky. Když k literálu připojíte znak
Dliterálu, vynutíte ho k datovémuDecimaltypu. Připojení znaku@typu identifikátoru k libovolnému identifikátoru ho vynutí .DecimalTyp architektury. Odpovídající typ v rozhraní .NET Framework je System.Decimal struktura.
Rozsah
K přiřazení velké hodnoty D proměnné nebo konstanty může být potřeba použít Decimal 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