HOWTO · PowerShell

PowerShell에서 숫자를 반올림하는 방법

이 기사에서는 .NET 프레임워크 Math 클래스의 여러 기능을 사용하여 PowerShell에서 숫자를 반올림하는 방법에 대해 논의할 것입니다.

이 페이지의 내용

PowerShell에서는 숫자의 정밀도를 조정하는 여러 방법을 제공하며, 필요한 결과에 따라 적절한 방법이 달라집니다. 소수 부분을 0 방향으로 제거하려면 [Math]::Truncate를, 특정 방향으로 반올림하려면 [Math]::Floor 또는 [Math]::Ceiling를, 가장 가까운 값으로 반올림하려면 [Math]::Round를 사용하세요. 소수 자릿수를 지정하거나 중간값의 동률 처리 방식을 제어하려면 [Math]::Round의 적절한 오버로드를 사용하면 됩니다.

작업에 맞는 반올림 방식을 선택하세요

각 연산은 서로 다른 역할을 합니다. 절삭은 소수 부분을 제거하고 0 방향으로 이동합니다. Floor는 음의 무한대 방향으로, ceiling은 양의 무한대 방향으로 이동합니다. 가장 가까운 값으로 반올림할 때는 [Math]::Round를 사용하며, 기본 중간값 규칙은 짝수 쪽을 선택하는 것입니다. 값을 서식 지정하거나 표시하기 전에 연산을 선택하세요. 서식 지정은 숫자의 표시 방식만 바꾸며 내부 숫자 값은 바꾸지 않습니다.

다음 예제를 실행하세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

$value = 12.34
[Math]::Round($value, 1)
12.3

[Math]::Truncate로 0 방향으로 절삭하기

[Math]::Truncate는 소수 부분을 버리고 0 방향으로 이동합니다. 양수에서는 내림과 비슷해 보이지만, 음수에서는 수직선상에서 위쪽으로 이동합니다. 예를 들어 -4.8을 절삭하면 -4가 되지만, Floor를 적용하면 -5가 됩니다. 항상 음의 무한대 방향으로 이동하는 대신 소수 부분만 제거해야 할 때 절삭을 사용하세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

$positive = [Math]::Truncate(4.8)
$negative = [Math]::Truncate(-4.8)
"$positive, $negative"
4, -4

[Math]::Floor로 내리고 [Math]::Ceiling로 올리기

[Math]::Floor는 입력값 이하인 가장 큰 정수를 반환하므로 음의 무한대 방향으로 이동합니다. [Math]::Ceiling는 입력값 이상인 가장 작은 정수를 반환하므로 양의 무한대 방향으로 이동합니다. 여기서 방향은 절댓값의 크기가 아니라 수직선상의 방향을 뜻합니다. 따라서 음수에서는 Floor를 적용하면 더 작은 값이, ceiling을 적용하면 덜 음수인 값이 나올 수 있습니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

$value = -4.2
$down = [Math]::Floor($value)
$up = [Math]::Ceiling($value)
"$down, $up"
-5, -4

[Math]::Round로 정수에 반올림하기

[Math]::Round(value)는 가장 가까운 정수를 반환합니다. 값이 두 정수의 정확한 중간이면 기본 MidpointRounding 동작은 짝수 쪽을 선택합니다. 즉, 인접한 두 정수 중 짝수가 결과가 됩니다. 이 규칙은 중간값 반올림을 반복할 때 위쪽으로 치우치는 현상을 줄여 줍니다. 따라서 62.5와 63.5는 서로 다른 쪽의 정수로 반올림됩니다. 이는 0.5를 항상 위로 반올림하는 것과 다릅니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

$firstTie = [Math]::Round(62.5)
$secondTie = [Math]::Round(63.5)
"$firstTie, $secondTie"
62, 64

지정한 소수 자릿수로 반올림하기

[Math]::Round(value, digits)를 사용하면 소수 자릿수를 지정해 반올림할 수 있습니다. digits 인수는 소수 자릿수의 개수입니다. 0은 정수, 1은 소수 첫째 자리까지, 2는 소수 둘째 자리까지 반올림하도록 지정합니다. 결과는 고정된 자릿수의 표시 문자열이 아니라 숫자 값이므로 뒤에 오는 0은 표시되지 않을 수 있습니다. 가격처럼 자릿수가 고정된 값을 표시할 때는 결과에 별도로 서식을 적용하고, 계산에는 적절한 숫자 형식과 반올림 정책을 사용하세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

$value = 63.827439
$whole = [Math]::Round($value, 0)
$onePlace = [Math]::Round($value, 1)
$twoPlaces = [Math]::Round($value, 2)
"$whole; $onePlace; $twoPlaces"
64; 63.8; 63.83

중간값 처리 방식을 명시적으로 선택하기

기본 짝수 쪽 반올림이 필요한 정책과 맞지 않으면 MidpointRounding 값을 [Math]::Round에 전달하세요. MidpointRounding.AwayFromZero는 정확한 중간값을 0에서 멀어지는 방향으로 보냅니다. 양수 동률은 더 큰 값으로, 음수 동률은 더 작은 값으로 이동합니다. 요구사항이 0에서 멀어지는 반올림이라면 이 규칙을 명시적으로 선택하세요. .NET에는 다른 중간값 규칙도 있으므로, ‘반올림’이 언제나 하나의 동률 처리 방식을 뜻한다고 가정하지 말고 필요한 정책을 확인하세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

$positiveTie = [Math]::Round(2.5, [MidpointRounding]::AwayFromZero)
$negativeTie = [Math]::Round(-2.5, [MidpointRounding]::AwayFromZero)
"$positiveTie, $negativeTie"
3, -3