Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Brève description
Cet article décrit la syntaxe et l’utilisation des valeurs numériques dans PowerShell.
Description longue
Il existe deux types de littéraux numériques : entier et réel. Les deux peuvent avoir des suffixes de type et de multiplicateur.
Littéraux entiers
Les littéraux entiers peuvent être écrits en notation décimale ou hexadécimale. Les littéraux hexadécimaux sont préfixés 0x pour les distinguer des nombres décimaux.
Les littéraux entiers peuvent avoir un suffixe de type et un suffixe multiplicateur.
| Suffixe | Signification |
|---|---|
l |
type de données long |
kb |
kibibyte (10241) multiplicateur |
mb |
mebibyte (10242) multiplicateur |
gb |
gigibyte (10243) multiplicateur |
tb |
teribyte (10244) multiplicateur |
pb |
petibyte (10245) multiplicateur |
Le type d’un littéral entier est déterminé par sa valeur, le suffixe de type et le suffixe multiplicateur numérique.
Pour un littéral entier sans suffixe de type :
- Si la valeur peut être représentée par type
[int], c’est-à-dire son type. - Sinon, si la valeur peut être représentée par type
[long], c’est-à-dire son type. - Sinon, si la valeur peut être représentée par type
[decimal], c’est-à-dire son type. - Sinon, il est représenté par type
[double].
Pour un littéral entier avec un suffixe de type :
- Si le suffixe de type est
uet que la valeur peut être représentée par type, son type[int]est[int]. - Si le suffixe de type est
uet que la valeur peut être représentée par type, son type[long]est[long]. - Si sa valeur peut être représentée par le type spécifié, il s’agit de son type.
- Sinon, ce littéral est mal formé.
Littéraux réels
Les littéraux réels ne peuvent être écrits qu’en notation décimale. Cette notation peut inclure des valeurs fractionnaires à la suite d’une notation décimale et scientifique à l’aide d’une partie exponentielle.
La partie exponentielle inclut un « e » suivi d’un signe facultatif (+/-) et d’un nombre représentant l’exposant. Par exemple, la valeur 1e2 littérale est égale à la valeur numérique 100.
Les littéraux réels peuvent avoir un suffixe de type et un suffixe multiplicateur.
| Suffixe | Signification |
|---|---|
d |
type de données decimal |
kb |
kibibyte (10241) multiplicateur |
mb |
mebibyte (10242) multiplicateur |
gb |
gigibyte (10243) multiplicateur |
tb |
teribyte (10244) multiplicateur |
pb |
petibyte (10245) multiplicateur |
Il existe deux types de littéraux réels : double et decimal. Elles sont indiquées par l’absence ou la présence, respectivement, du suffixe de type décimal. PowerShell ne prend pas en charge une représentation littérale d’une [float] valeur. Un littéral double réel a le type [double]. Un littéral réel décimal a le type [decimal].
Les zéros de fin dans la partie fractionnaire d’un littéral réel décimal sont significatifs.
Si la valeur des chiffres du composant exposant dans un [double] littéral réel est inférieure à la valeur minimale prise en charge, la valeur de ce [double] littéral réel est 0. Si la valeur des chiffres du composant exposant dans un [decimal] littéral réel est inférieure à la valeur minimale prise en charge, ce littéral est mal formé. Si la valeur des chiffres du composant exposant dans un [double] littéral réel ou [decimal] réel est supérieure à la valeur maximale prise en charge, ce littéral est mal formé.
Remarque
La syntaxe permet à un littéral double réel d’avoir un suffixe de type long.
PowerShell traite ce cas comme un littéral entier dont la valeur est représentée par le type [long]. Cette fonctionnalité a été conservée à des fins de compatibilité descendante avec les versions antérieures de PowerShell. Toutefois, il est déconseillé aux programmeurs d’utiliser des littéraux entiers de cette forme, car ils peuvent facilement masquer la valeur réelle du littéral. Par exemple, 1.2L a la valeur 1, 1.2345e1L a la valeur 12 et 1.2345e-5L a la valeur 0, dont aucune n’est immédiatement évidente.
Multiplicateurs numériques
Pour des raisons pratiques, les entiers et les littéraux réels peuvent contenir un multiplicateur numérique, qui indique l’un des ensembles de puissances couramment utilisées de 2. Le multiplicateur numérique peut être écrit dans n’importe quelle combinaison de lettres majuscules ou minuscules.
Les suffixes multiplicateurs peuvent être utilisés en combinaison avec les usuffixes , ulet l de type.
Exemples multiplicateurs
PS> 1kb
1024
PS> 1.30Dmb
1363148.80
PS> 0x10Gb
17179869184
PS> 1.4e23tb
1.5393162788864E+35
PS> 0x12Lpb
20266198323167232
Accélérateurs de type numérique
PowerShell prend en charge les accélérateurs de type suivants :
| Accélérateur | Remarque | Description |
|---|---|---|
[byte] |
Octet (non signé) | |
[sbyte] |
Octet (signé) | |
[int16] |
Entier de 16 bits | |
[uint16] |
Entier 16 bits (non signé) | |
[int32] |
Entier de 32 bits | |
[int] |
alias pour [int32] |
Entier de 32 bits |
[uint32] |
Entier 32 bits (non signé) | |
[int64] |
Entier 64 bits | |
[long] |
alias pour [int64] |
Entier 64 bits |
[uint64] |
Entier 64 bits (non signé) | |
[bigint] |
Voir Struct BigInteger | |
[single] |
Virgule flottante simple précision | |
[float] |
alias pour [single] |
Virgule flottante simple précision |
[double] |
Double précision à virgule flottante | |
[decimal] |
Virgule flottante 128 bits |
Utilisation d’autres types numériques
Pour utiliser d’autres types numériques, vous devez utiliser des accélérateurs de type, ce qui n’est pas sans certains problèmes. Par exemple, les valeurs entières élevées sont toujours analysées comme doubles avant d’être converties en tout autre type.
PS> [bigint]111111111111111111111111111111111111111111111111111111
111111111111111100905595216014112456735339620444667904
La valeur est analysée en tant que double première, ce qui perd la précision dans les plages supérieures. Pour éviter ce problème, entrez des valeurs sous forme de chaînes, puis convertissez-les :
PS> [bigint]'111111111111111111111111111111111111111111111111111111'
111111111111111111111111111111111111111111111111111111
Examples
Le tableau suivant contient plusieurs exemples de littéraux numériques et répertorie leur type et leur valeur :
| Nombre | Type | Value |
|---|---|---|
| 100 | Int32 | 100 |
| 100D | Décimal | 100 |
| 100l | Int64 | 100 |
| 1e2 | Double | 100 |
| 1.e2 | Double | 100 |
| 0x1e2 | Int32 | 482 |
| 0x1e2L | Int64 | 482 |
| 0x1e2D | Int32 | 7725 |
| 482D | Décimal | 482 |
| 482gb | Int64 | 517543559168 |
| 0x1e2lgb | Int64 | 517543559168 |
Conversion de type numérique
Lorsque des chaînes sont converties en nombres, des indicateurs de format hexadécimal supplémentaires sont pris en charge. Ces formats supplémentaires ne sont pas reconnus en tant que littéraux.
[int] '0xF' -eq 0xF
[int] '&hF' -eq 0xF
[int] '#F' -eq 0xF
Commandes qui ressemblent à des littéraux numériques
Toute commande qui ressemble à un littéral numérique doit être exécutée à l’aide de l’opérateur d’appel (&), sinon elle est interprétée comme un nombre du type associé.
Accéder aux propriétés et méthodes des objets numériques
Pour accéder à un membre d’un littéral numérique, il existe des cas où vous devez placer le littéral entre parenthèses.
- Le littéral n’a pas de virgule décimale
- Le littéral n’a aucun chiffre suivant le point décimal
- Le littéral n’a pas de suffixe
Par exemple, l’exemple suivant échoue :
PS> 2.GetType().Name
At line:1 char:11
+ 2.GetType().Name
+ ~
An expression was expected after '('.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression
Les exemples suivants fonctionnent :
PS> 2L.GetType().Name
Int64
PS> 1.234.GetType().Name
Double
PS> (2).GetType().Name
Int32
Les deux premiers exemples fonctionnent sans placer la valeur littérale entre parenthèses, car l’analyseur PowerShell peut déterminer où se termine le littéral numérique et la méthode GetType démarre.