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.
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.