Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Krátký popis
Tento článek popisuje syntaxi a použití číselných hodnot v PowerShellu.
Dlouhý popis
Existují dva druhy číselných literálů: celé číslo a reálné. Oba můžou mít přípony typu a násobitele.
Celočíselné literály
Celočíselné literály lze zapsat v desítkovém nebo šestnáctkovém zápisu. Šestnáctkové literály mají předponu 0x , aby se odlišily od desetinných čísel.
Celočíselné literály můžou mít příponu typu a příponu násobitele.
| Přípona | Význam |
|---|---|
l |
dlouhý datový typ |
kb |
násobitel kibibajtů (10241) |
mb |
mebibajtů (10242) násobitel |
gb |
násobitel gigibajtů (10243) |
tb |
násobitel teribajtů (10244) |
pb |
násobitel petibajtů (10245) |
Typ celočíselného literálu je určen jeho hodnotou, příponou typu a číselnou příponou násobitele.
Pro celočíselnou literál bez přípony typu:
- Pokud může být hodnota reprezentována typem
[int], to je jeho typ. - V opačném případě, pokud lze hodnotu reprezentovat podle typu
[long], to je jeho typ. - V opačném případě, pokud lze hodnotu reprezentovat podle typu
[decimal], to je jeho typ. - V opačném případě je reprezentován typem
[double].
Pro celočíselnou literál s příponou typu:
- Pokud je
upřípona typu a hodnota může být reprezentována typem[int], je[int]jeho typ . - Pokud je
upřípona typu a hodnota může být reprezentována typem[long], je[long]jeho typ . - Pokud je její hodnota reprezentována typem zadaným, pak je to jeho typ.
- Jinak je tento literál poškozený.
Skutečné literály
Skutečné literály lze zapsat pouze v desítkovém zápisu. Tento zápis může obsahovat desetinné hodnoty za desetinnou čárkou a vědecký zápis pomocí exponenciální části.
Exponenciální část obsahuje znak e následovaný volitelným symbolem (+/-) a číslem představujícím exponent. Například hodnota 1e2 literálu se rovná číselné hodnotě 100.
Skutečné literály můžou mít příponu typu a příponu násobitele.
| Přípona | Význam |
|---|---|
d |
desetinný datový typ |
kb |
násobitel kibibajtů (10241) |
mb |
mebibajtů (10242) násobitel |
gb |
násobitel gigibajtů (10243) |
tb |
násobitel teribajtů (10244) |
pb |
násobitel petibajtů (10245) |
Existují dva druhy reálného literálu: double a decimal. Ty jsou označeny absencí nebo přítomností přípony typu desetinné čárky. PowerShell nepodporuje literální reprezentaci [float] hodnoty. Dvojitý skutečný literál má typ [double]. Desetinný skutečný literál má typ [decimal].
Koncové nuly v části zlomku desetinného reálného literálu jsou významné.
Pokud je hodnota číslic exponent-part v reálném literálu [double] menší než minimální podporovaná hodnota, hodnota tohoto [double] reálného literálu je 0. Pokud je hodnota číslic exponent-part v reálném literálu [decimal] menší než minimální podporovaná hodnota, je tento literál poškozený. Pokud je hodnota číslic exponent-part v reálném [double] literálu [decimal] větší než maximální podporovaná hodnota, je tento literál poškozený.
Poznámka:
Syntaxe umožňuje dvojitý skutečný literál mít příponu dlouhého typu.
PowerShell považuje tento případ za celočíselnou literál, jehož hodnota je reprezentována typem [long]. Tato funkce byla zachována kvůli zpětné kompatibilitě se staršími verzemi PowerShellu. Programátoři ale nedoporučuje používat celočíselné literály tohoto formuláře, protože mohou snadno zakrýt skutečnou hodnotu literálu. Má například 1.2L hodnotu 1, 1.2345e1L má hodnotu 12 a 1.2345e-5L má hodnotu 0, z níž není okamžitě zřejmé.
Číselné násobitele
Pro usnadnění může celé číslo a reálné literály obsahovat číselný násobitel, který označuje jednu ze sady běžně používaných mocnin 2. Číselný násobitel lze zapsat v libovolné kombinaci velkých nebo malých písmen.
Přípony násobitele lze použít v kombinaci s příponou u, ula l typem přípony.
Příklady násobitele
PS> 1kb
1024
PS> 1.30Dmb
1363148.80
PS> 0x10Gb
17179869184
PS> 1.4e23tb
1.5393162788864E+35
PS> 0x12Lpb
20266198323167232
Akcelerátory číselného typu
PowerShell podporuje následující akcelerátory typů:
| Akcelerátor | Poznámka: | Popis |
|---|---|---|
[byte] |
Bajt (bez znaménka) | |
[sbyte] |
Bajt (podepsaný) | |
[int16] |
16bitové celé číslo | |
[uint16] |
16bitové celé číslo (bez znaménka) | |
[int32] |
32bitové celé číslo | |
[int] |
alias pro [int32] |
32bitové celé číslo |
[uint32] |
32bitové celé číslo (bez znaménka) | |
[int64] |
64bitové celé číslo | |
[long] |
alias pro [int64] |
64bitové celé číslo |
[uint64] |
64bitové celé číslo (bez znaménka) | |
[bigint] |
Viz BigInteger – struktura | |
[single] |
Jednoduchá přesnost s plovoucí desetinnou čárkou | |
[float] |
alias pro [single] |
Jednoduchá přesnost s plovoucí desetinnou čárkou |
[double] |
Dvojitá přesnost s plovoucí desetinnou čárkou | |
[decimal] |
128bitová plovoucí čárka |
Práce s jinými číselnými typy
Chcete-li pracovat s jinými číselnými typy, musíte použít akcelerátory typů, které nejsou bez problémů. Například vysoké celočíselné hodnoty se před přetypování na jakýkoli jiný typ vždy parsují jako dvojité.
PS> [bigint]111111111111111111111111111111111111111111111111111111
111111111111111100905595216014112456735339620444667904
Hodnota se nejprve analyzuje jako dvojitá, při ztrátě přesnosti ve vyšších rozsazích. Chcete-li se tomuto problému vyhnout, zadejte hodnoty jako řetězce a pak je převeďte:
PS> [bigint]'111111111111111111111111111111111111111111111111111111'
111111111111111111111111111111111111111111111111111111
Examples
Následující tabulka obsahuje několik příkladů číselných literálů a uvádí jejich typ a hodnotu:
| Počet | Typ | Hodnota |
|---|---|---|
| 100 | Int32 | 100 |
| 100D | Desetinné číslo | 100 |
| 100l | Int64 | 100 |
| 1e2 | Hodnota s dvojitou přesností | 100 |
| 1.e2 | Hodnota s dvojitou přesností | 100 |
| 0x1e2 | Int32 | 482 |
| 0x1e2L | Int64 | 482 |
| 0x1e2D | Int32 | 7725 |
| 482D | Desetinné číslo | 482 |
| 482gb | Int64 | 517543559168 |
| 0x1e2lgb | Int64 | 517543559168 |
Převod číselného typu
Při převodu řetězců na čísla se podporují další šestnáctkové indikátory formátu. Tyto další formáty se nerozpoznají jako literály.
[int] '0xF' -eq 0xF
[int] '&hF' -eq 0xF
[int] '#F' -eq 0xF
Příkazy, které vypadají jako číselné literály
Každý příkaz, který vypadá jako číselný literál, musí být proveden pomocí operátoru volání (&), jinak se interpretuje jako číslo přidruženého typu.
Přístup k vlastnostem a metodám číselných objektů
Pokud chcete získat přístup k členu číselného literálu, existují případy, kdy potřebujete literál uzavřít do závorek.
- Literál nemá desetinnou čárku.
- Literál neobsahuje žádné číslice za desetinnou čárkou.
- Literál nemá příponu.
Například následující příklad selže:
PS> 2.GetType().Name
At line:1 char:11
+ 2.GetType().Name
+ ~
An expression was expected after '('.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression
Následující příklady fungují:
PS> 2L.GetType().Name
Int64
PS> 1.234.GetType().Name
Double
PS> (2).GetType().Name
Int32
První dva příklady fungují bez uzavření hodnoty literálu do závorek, protože analyzátor PowerShellu může určit, kde číselný literál končí a metoda GetType začíná.