Decimális adattípus (Visual Basic)
Aláírt 128 bites (16 bájtos) értékeket tartalmaz, amelyek 96 bites (12 bájtos) egész számokat jelölnek, és 10 változó hatványával skálázhatók. A skálázási tényező a tizedesvessző jobb oldalán lévő számjegyek számát határozza meg; 0 és 28 közötti tartományba esik. A 0 skálával (tizedesjegyek nélkül) a legnagyobb lehetséges érték a +/-79 228 162 514 264 337 593,5 43 950 335 (+/-7,9228162514264337593543950335E+28). 28 tizedesjegyekkel a legnagyobb érték a +/-7,9228162514264375935439543950335, a legkisebb nemzero érték pedig +/-0,00000000000000000000000000000000000001 (+/-1E-28).
Megjegyzések
Az Decimal
adattípus a legnagyobb számú jelentős számjegyet biztosítja egy számhoz. Legfeljebb 29 jelentős számjegyet támogat, és 7,9228 x 10^28-at meghaladó értékeket jelölhet. Különösen alkalmas olyan számításokhoz, mint például a pénzügyi, amelyek nagy számú számjegyet igényelnek, de nem tolerálják a kerekítési hibákat.
Az alapértelmezett érték Decimal
0.
Programozási tippek
Precizitás.
Decimal
nem lebegőpontos adattípus. ADecimal
struktúra bináris egész számot tartalmaz, valamint egy jelbitet és egy egész szám skálázási tényezőt, amely meghatározza, hogy az érték mely része tizedes tört. Emiatt a számok pontosabban ábrázolják a memóriát,Decimal
mint a lebegőpontos típusok (Single
ésDouble
).Teljesítmény. Az
Decimal
adattípus a leglassabb az összes numerikus típus közül. Az adattípus kiválasztása előtt mérlegelje a pontosság és a teljesítmény fontosságát.Szélesedő. Az
Decimal
adattípus a következőre szélesedik:Single
vagyDouble
. Ez azt jelenti, hogy hiba nélkül konvertálhatDecimal
bármelyik típusra System.OverflowException .Záró nullák. A Visual Basic nem tárolja a záró nullákat literálban
Decimal
. ADecimal
változók azonban megőrzik a számítással beszerzett záró nullákat. Az alábbi példa ezt szemlélteti.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))
Az előző példában szereplő kimenet
MsgBox
a következő:d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4
Írja be a karaktereket. Ha a literál típusú karaktert
D
hozzáfűzi egy literálhoz, az az adattípushoz kényszerítiDecimal
. Ha hozzáfűzi az azonosítótípus karakterét@
az azonosítóhoz, az arra kényszeríti.Decimal
Keretrendszer típusa. A .NET-keretrendszer megfelelő típusa a System.Decimal struktúra.
Tartomány
Előfordulhat, hogy a D
típus karakterrel nagy értéket kell hozzárendelnie egy változóhoz vagy állandóhoz Decimal
. Ennek a követelménynek az az oka, hogy a fordító úgy értelmezi a literálokat, mintha Long
egy literál típusú karakter nem követi a literálist, ahogyan az az alábbi példában látható.
Dim bigDec1 As Decimal = 9223372036854775807 ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808 ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D ' No overflow.
A deklaráció bigDec1
nem eredményez túlcsordulást, mert a hozzá rendelt érték a tartományon Long
belül esik. Az Long
érték hozzárendelhető a Decimal
változóhoz.
A deklaráció bigDec2
túlcsordulási hibát okoz, mert a hozzá rendelt érték túl nagy.Long
Mivel a numerikus literál először nem értelmezhető, Long
nem rendelhető hozzá a Decimal
változóhoz.
A bigDec3
literál típusú karakter D
ugyanis úgy oldja meg a problémát, hogy a fordítót arra kényszeríti, hogy a literálist ne Long
a következőképpen Decimal
értelmezze.