파워셸 - 가장 가까운 정수로 반올림
PowerShell에서 가장 가까운 정수로 반올림하는 가장 좋은 방법은 무엇입니까?
난 노력하고 있다.[math]::truncate
하지만 그것은 나에게 예측 가능한 결과를 주지 않습니다.
예:
$bla = 17.2/0.1
[math]::truncate($bla)
예상되는 172 대신 171을 출력합니다!
$bla = 172
[math]::truncate($bla)
출력 172
나는 단지 효과가 있고 항상 둥글게 만들어야 하는 것이 필요합니다.round($myNum + 0.5)
숫자가 0.5 성분일 경우 반올림될 수 있는 베이커의 반올림으로 인해 작동하지 않습니다.)
아, 그렇군요.데이터 유형은 10진수여야 합니다.
[decimal] $de = 17.2/.1
[double] $db = 17.2/.1
[math]::floor($de)
172
[math]::floor($db)
171
http://msdn.microsoft.com/en-us/library/system.math.floor(v=vs.85).aspx
수학:바닥 함수와 [십진수] 선언을 결합하면 원하는 결과를 얻을 수 있습니다.
[수학]:: 바닥([소수](17.27975/0.1))
반환 = 172
원본과 관련하여 발생하는 문제17.2/0.1
나눗셈 예제는 주어진 소수점 값의 부동 소수점 표현의 부정확성 때문입니다(다른 답변에 대한 조이의 설명에서 언급됨).PowerShell에서 최종 값의 왕복 표현을 조사하면 이를 확인할 수 있습니다.
PS> $bla = 17.2/0.1
PS> $bla.GetType().FullName
System.Double
PS> $bla.ToString()
172
PS> $bla.ToString('r')
171.99999999999997
이 문제를 해결하는 간단한 방법은 결과를 다음과 같이 선언하는 것입니다.int
PowerShell은 자동으로 결과를 가장 가까운 정수 값으로 반올림합니다.
PS> [int]$bli = 17.2/0.1
PS> $bli.GetType().FullName
System.Int32
PS> $bli.ToString()
172
기본값을 사용합니다.중간점 반올림의 NET 방법입니다.ToEven(은행가 라운딩이라고도 함).이것은 많은 숫자 값을 표로 만들 때 좋은 통계적 특성을 가지지만, 더 간단한 0에서 벗어나는 방법으로 변경할 수도 있습니다.
function round( $value, [MidpointRounding]$mode = 'AwayFromZero' ) {
[Math]::Round( $value, $mode )
}
PS> [int]3.5
4
PS> [int]4.5
4
PS> round 3.5
4
PS> round 4.5
5
다른 옵션은 원래 값에 대해 보다 정확한 표현을 사용하여 문제를 완전히 방지하는 것입니다.
PS> $bld = [decimal]17.2/0.1
PS> $bld.GetType().FullName
System.Decimal
PS> $bld.ToString()
172
[Math]::floor($x)
기본적으로 제공되는 방법입니다.
음의 숫자로 어떻게 행동할지만 알아두세요.[Math]::floor(5.5)
돌아온다5
,그렇지만[Math]::floor(-5.5)
돌아온다-6
.
0에 가까운 값을 반환하는 기능이 필요한 경우 다음이 필요합니다.
If ($x -ge 0) {
[Math]::Floor($x)
} Else {
[Math]::Ceiling($x)
}
언급URL : https://stackoverflow.com/questions/5863772/powershell-round-down-to-nearest-whole-number
'programing' 카테고리의 다른 글
Android SDK 설치를 자동화할 수 있는 방법이 있습니까? (0) | 2023.08.08 |
---|---|
Maria DB 10.3의 MSSQL에서 MSSQL 식별자 괄호 무시/사용 (0) | 2023.08.08 |
Excel에서 셀에 문자열 쓰기 (0) | 2023.08.08 |
부트스트랩 모달: 전환 시 배경이 맨 위로 이동합니다. (0) | 2023.08.08 |
DOM 요소를 일시적으로 제거했다가 나중에 다시 삽입하시겠습니까? (0) | 2023.08.08 |