Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Decimalnem lebegőpontos adattípus. ADecimalstruktú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,Decimalmint a lebegőpontos típusok (SingleésDouble).Teljesítmény. Az
Decimaladattí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ő. A
DecimaladattípusSinglevagyDoublealakítható át System.OverflowException hiba nélkül. Ez az átalakítás azonban a pontosságelvesztését eredményezheti, mivel és a pontosság megőrzése helyett a nagyobb értékek elhelyezését helyezi előtérbe.
Dim decimalValue As Decimal = 1234567890123456789012345D
Dim doubleValue As Double = CDbl(decimalValue)
Console.WriteLine("Decimal value: " & decimalValue)
Console.WriteLine("Double value: " & doubleValue)
Az előző példa kimenete azt mutatja, hogy a decimális érték megtartja a teljes pontosságot, míg a Dupla érték a Double adattípus korlátozásai miatt elveszíti a pontosságot.
Decimal value: 1234567890123456789012345
Double value: 1.23456789012346E+24
Záró nullák. A Visual Basic nem tárolja a záró nullákat literálban
Decimal. ADecimalvá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
MsgBoxa következő:d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4Írja be a karaktereket. Ha a literál típusú karaktert
Dhozzá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.DecimalKeretrendszer 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 Decimala következőképpen Long értelmezze.