간단한 설명
이 문서에서는 PowerShell에서 숫자 값의 구문 및 사용에 대해 설명합니다.
긴 설명
숫자 리터럴에는 정수와 실수의 두 종류가 있습니다. 둘 다 형식 및 승수 접미사를 가질 수 있습니다.
정수 리터럴
정수 리터럴은 10진수 또는 16진수 표기법으로 작성할 수 있습니다. 16진수 리터럴은 10진수와 0x 구분하기 위해 접두사로 지정됩니다.
정수 리터럴에는 형식 접미사와 승수 접미사가 있을 수 있습니다.
| 접미사 | 의미 |
|---|---|
l |
long 데이터 형식 |
kb |
kibibyte (10241) 승수 |
mb |
mebibyte (10242) 승수 |
gb |
gigibyte (10243) 승수 |
tb |
테리바이트 (1024 4) 승수 |
pb |
petibyte (10245) 승수 |
정수 리터럴의 형식은 해당 값, 형식 접미사 및 숫자 승수 접미사에 의해 결정됩니다.
형식 접미사가 없는 정수 리터럴의 경우:
- 값을 형식으로 나타낼 수 있는 경우 해당 형식
[int]입니다. - 그렇지 않은 경우 값을 형식으로 나타낼 수 있으면 해당 형식
[long]입니다. - 그렇지 않은 경우 값을 형식으로 나타낼 수 있으면 해당 형식
[decimal]입니다. - 그렇지 않으면 형식
[double]으로 표시됩니다.
형식 접미사가 있는 정수 리터럴의 경우:
- 형식 접미사가
u있고 값을 형식[int]으로 나타낼 수 있는 경우 해당 형식은 입니다[int]. - 형식 접미사가
u있고 값을 형식[long]으로 나타낼 수 있는 경우 해당 형식은 입니다[long]. - 해당 값을 지정된 형식으로 나타낼 수 있으면 해당 형식입니다.
- 그렇지 않으면 해당 리터럴의 형식이 잘못되었습니다.
실제 리터럴
실제 리터럴은 10진수 표기법으로만 작성할 수 있습니다. 이 표기법은 지수 부분을 사용하는 소수점 및 과학적 표기법을 따르는 소수 값을 포함할 수 있습니다.
지수 부분에는 'e'와 선택적 기호(+/-) 및 지수를 나타내는 숫자가 포함됩니다. 예를 들어 리터럴 값 1e2 은 숫자 값 100과 같습니다.
실제 리터럴에는 형식 접미사와 승수 접미사가 있을 수 있습니다.
| 접미사 | 의미 |
|---|---|
d |
10진수 데이터 형식 |
kb |
kibibyte (10241) 승수 |
mb |
mebibyte (10242) 승수 |
gb |
gigibyte (10243) 승수 |
tb |
테리바이트 (1024 4) 승수 |
pb |
petibyte (10245) 승수 |
실제 리터럴에는 이중 및 소수점이라는 두 가지 종류가 있습니다. 각각 소수 형식 접미사의 부재 또는 존재 여부가 표시됩니다. PowerShell은 값의 리터럴 표현을 [float] 지원하지 않습니다. double real 리터럴에는 형식이 있습니다 [double]. 10진수 실제 리터럴에는 형식 [decimal]이 있습니다.
소수 실제 리터럴의 분수 부분에 있는 후행 0은 중요합니다.
실제 리터럴의 지수 부분 자릿수 [double] 값이 지원되는 최소값보다 작으면 해당 [double] 실제 리터럴의 값은 0입니다. 실제 리터럴의 지수 부분 자릿수 [decimal] 값이 지원되는 최소값보다 작으면 해당 리터럴의 형식이 잘못되었습니다. 또는 [double] 실제 리터럴의 지수 부분 자릿수 [decimal] 값이 지원되는 최대값보다 크면 해당 리터럴의 형식이 잘못되었습니다.
참고 항목
구문은 이중 실제 리터럴이 긴 형식 접미사를 가질 수 있도록 허용합니다.
PowerShell은 이 경우 값을 형식 [long]으로 나타내는 정수 리터럴로 처리합니다. 이 기능은 이전 버전의 PowerShell과의 호환성을 위해 유지되었습니다. 그러나 프로그래머는 리터럴의 실제 값을 쉽게 가릴 수 있으므로 이 형식의 정수 리터럴을 사용하지 않는 것이 좋습니다. 예를 들어 1.2L 값이 1이고, 1.2345e1L 값이 12이고 1.2345e-5L , 값이 0이며, 그 중 어느 것도 즉시 명확하지 않습니다.
숫자 승수
편의를 위해 정수 및 실제 리터럴에는 일반적으로 사용되는 2의 승수 집합 중 하나를 나타내는 숫자 승수가 포함될 수 있습니다. 숫자 승수는 대문자 또는 소문자의 조합으로 작성할 수 있습니다.
승수 접미사는 , u및 ul 형식 접미사와 함께 l사용할 수 있습니다.
승수 예제
PS> 1kb
1024
PS> 1.30Dmb
1363148.80
PS> 0x10Gb
17179869184
PS> 1.4e23tb
1.5393162788864E+35
PS> 0x12Lpb
20266198323167232
숫자 형식 가속기
PowerShell은 다음 형식 가속기를 지원합니다.
다른 숫자 형식 작업
다른 숫자 형식을 사용하려면 몇 가지 문제가 없는 형식 가속기를 사용해야 합니다. 예를 들어 높은 정수 값은 항상 다른 형식으로 캐스팅되기 전에 double로 구문 분석됩니다.
PS> [bigint]111111111111111111111111111111111111111111111111111111
111111111111111100905595216014112456735339620444667904
값은 먼저 double로 구문 분석되어 더 높은 범위에서 정밀도가 손실됩니다. 이 문제를 방지하려면 값을 문자열로 입력한 다음 변환합니다.
PS> [bigint]'111111111111111111111111111111111111111111111111111111'
111111111111111111111111111111111111111111111111111111
예시
다음 표에는 숫자 리터럴의 몇 가지 예제가 포함되어 있으며 해당 형식과 값이 나열되어 있습니다.
| number | Type | 값 |
|---|---|---|
| 100 | Int32 | 100 |
| 100D | 소수 | 100 |
| 100l | Int64 | 100 |
| 1e2 | Double | 100 |
| 1.e2 | Double | 100 |
| 0x1e2 | Int32 | 482 |
| 0x1e2L | Int64 | 482 |
| 0x1e2D | Int32 | 7725 |
| 482D | 소수 | 482 |
| 482gb | Int64 | 517543559168 |
| 0x1e2lgb | Int64 | 517543559168 |
숫자 형식 변환
문자열이 숫자로 변환되면 추가 16진수 형식 표시기가 지원됩니다. 이러한 추가 형식은 리터럴로 인식되지 않습니다.
[int] '0xF' -eq 0xF
[int] '&hF' -eq 0xF
[int] '#F' -eq 0xF
숫자 리터럴처럼 보이는 명령
숫자 리터럴처럼 보이는 명령은 호출 연산자()&를 사용하여 실행해야 하며, 그렇지 않으면 연결된 형식의 숫자로 해석됩니다.
숫자 개체의 액세스 속성 및 메서드
숫자 리터럴의 멤버에 액세스하려면 리터럴을 괄호로 묶어야 하는 경우가 있습니다.
- 리터럴에 소수점이 없습니다.
- 리터럴에 소수점 다음의 자릿수가 없습니다.
- 리터럴에 접미사가 없습니다.
예를 들어 다음 예제는 실패합니다.
PS> 2.GetType().Name
At line:1 char:11
+ 2.GetType().Name
+ ~
An expression was expected after '('.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression
다음 예제가 작동합니다.
PS> 2L.GetType().Name
Int64
PS> 1.234.GetType().Name
Double
PS> (2).GetType().Name
Int32
PowerShell 파서가 숫자 리터럴이 끝나고 GetType 메서드가 시작되는 위치를 결정할 수 있으므로 처음 두 예제는 리터럴 값을 괄호로 묶지 않고 작동합니다.
PowerShell