Megosztás a következőn keresztül:


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. A Decimal 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 és Double).

  • 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 vagy Double. Ez azt jelenti, hogy hiba nélkül konvertálhat Decimal bármelyik típusra System.OverflowException .

  • Záró nullák. A Visual Basic nem tárolja a záró nullákat literálban Decimal . A Decimal 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íti Decimal . 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 Longbelü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ő, Longnem rendelhető hozzá a Decimal változóhoz.

A bigDec3literá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 Longa következőképpen Decimal értelmezze.

Lásd még