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


about_Numeric_Literals

Rövid leírás

Ez a cikk a PowerShell numerikus értékeinek szintaxisát és használatát ismerteti.

Hosszú leírás

Kétféle numerikus literál létezik: egész szám és valós. Mindkettő típus- és szorzó-utótagokkal rendelkezhet.

Egész számkonstansok

Az egész szám literálok decimális vagy hexadecimális jelölésben írhatók. A hexadecimális literálok előtaggal 0x vannak elhatárolva a tizedes törtektől.

Az egész számkonstansok típus-utótagokkal és szorzó utótagokkal is rendelkezhetnek.

Toldalék Értelmezés
l hosszú adattípus
kb kibibyte (10241) szorzó
mb mebibyte (10242) szorzó
gb gigibyte (10243) szorzó
tb teribyte (10244) szorzó
pb petibyte (10245) szorzó

Az egész számkonstans típusát az értéke, a típus utótagja és a numerikus szorzó utótagja határozza meg.

Típus utótag nélküli egész számkonstans esetén:

  • Ha az érték típus [int]szerint jeleníthető meg, akkor ez a típusa.
  • Ellenkező esetben, ha az érték típus [long]szerint ábrázolható, akkor ez a típusa.
  • Ellenkező esetben, ha az érték típus [decimal]szerint ábrázolható, akkor ez a típusa.
  • Ellenkező esetben típus szerint van jelölve [double].

Egész szám típusú utótaggal rendelkező literál esetén:

  • Ha a típus utótagja, u és az érték típus [int] szerint ábrázolható, akkor a típusa .[int]
  • Ha a típus utótagja, u és az érték típus [long] szerint ábrázolható, akkor a típusa .[long]
  • Ha az érték a megadott típus szerint ábrázolható, akkor ez a típusa.
  • Ellenkező esetben a literál helytelenül van formázva.

Valós literálok

A valódi literálok csak decimális jelölésben írhatók. Ez a jelölés a tizedesvesszőt követő törtértékeket és az exponenciális részt használó tudományos jelöléseket is tartalmazhat.

Az exponenciális rész tartalmaz egy "e"-t, amelyet egy választható jel (+/-) és egy szám követ, amely a kitevőt jelöli. A literális érték 1e2 például a 100-nak felel meg.

A valódi literálok típus-utótagokkal és szorzó utótagokkal is rendelkezhetnek.

Toldalék Értelmezés
d decimális adattípus
kb kibibyte (10241) szorzó
mb mebibyte (10242) szorzó
gb gigibyte (10243) szorzó
tb teribyte (10244) szorzó
pb petibyte (10245) szorzó

Kétféle valódi literál létezik: dupla és decimális. Ezeket a tizedes típusú utótag hiánya vagy jelenléte jelzi. A PowerShell nem támogatja az [float] értékek literális ábrázolását. A dupla valós literál típusa [double]. A decimális valódi literál típusa [decimal]. A decimális valós literál törtrészében lévő záró nullák jelentősek.

Ha az exponent-part számjegyeinek értéke egy [double] valós literálban kisebb, mint a minimálisan támogatott érték, akkor a valódi literál értéke [double] 0. Ha az exponent-part számjegyeinek értéke egy [decimal] valós literálban kisebb, mint a minimális támogatott érték, akkor ez a literál helytelenül van formázva. Ha a kitevő-rész számjegyeinek értéke egy [double] vagy [decimal] valós literálban nagyobb, mint a maximális támogatott érték, akkor ez a literál helytelenül van formázva.

Feljegyzés

A szintaxis lehetővé teszi, hogy egy dupla valós literál hosszú típusú utótagot adjon meg. A PowerShell ezt az esetet egész számkonstansként kezeli, amelynek értékét típus [long]jelöli. Ezt a funkciót megőrizték a PowerShell korábbi verzióival való visszamenőleges kompatibilitás érdekében. A programozók azonban nem tudják használni az űrlap egész számkonstansait, mivel könnyen elfedhetik a literál tényleges értékét. Például 1.2L az 1 értéket, 1.2345e1L a 12 értéket, és 1.2345e-5L a 0 értéket, amelyek közül egyik sem azonnal nyilvánvaló.

Numerikus szorzók

A kényelem érdekében az egész szám és a valós literálok tartalmazhatnak numerikus szorzót, amely a 2 gyakran használt hatványok egyikét jelzi. A numerikus szorzó nagybetűk vagy kisbetűk tetszőleges kombinációjában írható.

A szorzó utótagok a , és uul a ltípus utótagokkal kombinálva használhatók.

Példák szorzókra

PS> 1kb
1024

PS> 1.30Dmb
1363148.80

PS> 0x10Gb
17179869184

PS> 1.4e23tb
1.5393162788864E+35

PS> 0x12Lpb
20266198323167232

Numerikus típusú gyorsítók

A PowerShell a következő típusgyorsítókat támogatja:

Gázpedál Feljegyzés Leírás
[byte] Bájt (aláíratlan)
[sbyte] Bájt (aláírt)
[int16] 16 bites egész szám
[uint16] 16 bites egész szám (aláíratlan)
[int32] 32 bites egész szám
[int] alias a következőhöz: [int32] 32 bites egész szám
[uint32] 32 bites egész szám (aláíratlan)
[int64] 64 bites egész szám
[long] alias a következőhöz: [int64] 64 bites egész szám
[uint64] 64 bites egész szám (aláíratlan)
[bigint] Lásd: BigInteger Struct
[single] Egyetlen pontosságú lebegőpontos
[float] alias a következőhöz: [single] Egyetlen pontosságú lebegőpontos
[double] Dupla pontosságú lebegőpontos
[decimal] 128 bites lebegőpontos

Más numerikus típusok használata

Más numerikus típusok használatához típusgyorsítókat kell használnia, ami nem problémamentes. A magas egész értékek például mindig dupla értékként vannak elemezve, mielőtt bármilyen más típusba kerülnek.

PS> [bigint]111111111111111111111111111111111111111111111111111111
111111111111111100905595216014112456735339620444667904

Az érték kettős elsőként lesz elemezve, és a nagyobb tartományokban elveszíti a pontosságot. A probléma elkerülése érdekében sztringekként adja meg az értékeket, majd konvertálja őket:

PS> [bigint]'111111111111111111111111111111111111111111111111111111'
111111111111111111111111111111111111111111111111111111

Példák

Az alábbi táblázat számos példát tartalmaz a numerikus literálokra, és felsorolja azok típusát és értékét:

Szám Típus Érték
100 Int32 100
100D Decimális 100
100l Int64 100
1e2 Kétszeres 100
1.e2 Kétszeres 100
0x1e2 Int32 482
0x1e2L Int64 482
0x1e2D Int32 7725
482D Decimális 482
482gb Int64 517543559168
0x1e2lgb Int64 517543559168

Numerikus típus konvertálása

Ha a sztringeket számokká konvertálja, további hexadecimális formátumjelzők támogatottak. Ezeket a további formátumokat a rendszer nem ismeri fel literálként.

[int] '0xF' -eq 0xF
[int] '&hF' -eq 0xF
[int] '#F' -eq 0xF

Numerikus literálokhoz hasonló parancsok

A számkonstansnak tűnő parancsokat a hívó operátorral (&) kell végrehajtani, ellenkező esetben a függvény a társított típus számaként értelmezi.

Numerikus objektumok hozzáférési tulajdonságai és metódusai

A numerikus literál egy tagjának eléréséhez vannak olyan esetek, amikor zárójelbe kell helyeznie a literálist.

  • A literál nem rendelkezik tizedesvesszővel
  • A literál nem tartalmaz számjegyeket a tizedesvessző után
  • A literálnak nincs utótagja

A következő példa például meghiúsul:

PS> 2.GetType().Name
At line:1 char:11
+ 2.GetType().Name
+           ~
An expression was expected after '('.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression

A következő példák működnek:

PS> 2L.GetType().Name
Int64
PS> 1.234.GetType().Name
Double
PS> (2).GetType().Name
Int32

Az első két példa a konstans érték zárójelbe helyezése nélkül működik, mivel a PowerShell-elemző meg tudja határozni, hogy hol végződik a számkonstans, és hol kezdődik a GetType metódus.