見出し画像

PowerShell 四捨五入する(切り上げ、切り捨て)

PowerShellで四捨五入、切り上げ、切り捨てする方法を解説します。




四捨五入

 

# 四捨五入
# [Math]::Round(四捨五入したい数, 小数何桁にするか, [MidpointRounding]::AwayFromZero)


# 実行例
[Math]::Round(123.456789, 0, [MidpointRounding]::AwayFromZero)  # 123
[Math]::Round(123.456789, 1, [MidpointRounding]::AwayFromZero)  # 123.5
[Math]::Round(123.456789, 2, [MidpointRounding]::AwayFromZero)  # 123.46

注意!「 [MidpointRounding]::AwayFromZero」を付けないと近い偶数に丸められてしまします。

PS C:\temp> [Math]::Round( 123.45 , 1)
123.4
PS C:\temp> [Math]::Round( 123.45 , 1, [MidpointRounding]::AwayFromZero) 
123.5



切り上げ

 

# 切り上げ
# 「小数何桁にするか」は2箇所設定することに注意してください
[Math]::Ceiling(切り上げしたい数 * [Math]::Pow(10, 小数何桁にするか)) / [Math]::Pow(10, 小数何桁にするか)


# 実行例
[Math]::Ceiling(123.456789 * [Math]::Pow(10, 0)) / [Math]::Pow(10, 0)  #124
[Math]::Ceiling(123.456789 * [Math]::Pow(10, 1)) / [Math]::Pow(10, 1)  #123.5
[Math]::Ceiling(123.456789 * [Math]::Pow(10, 2)) / [Math]::Pow(10, 2)  #123.46
[Math]::Ceiling(123.000001 * [Math]::Pow(10, 3)) / [Math]::Pow(10, 3)  #123.001

関数化してみました

# 切り上げしたい数と桁を渡す

function Ceiling([double]$num, [int]$numDigits = 0){
    $m = [Math]::Pow(10, $numDigits)
    return [Math]::Ceiling($num * $m) / $m
}

# 実行例
PS C:\temp> Ceiling 123.456789 3
123.457



切り捨て

 

# 切り捨て
# 「小数何桁にするか」は2箇所設定することに注意してください
[Math]::Truncate(切り捨てしたい数 * [Math]::Pow(10, 小数何桁にするか)) / [Math]::Pow(10, 小数何桁にするか)


# 実行例
[Math]::Truncate(123.456789 * [Math]::Pow(10, 0)) / [Math]::Pow(10, 0)  # 123
[Math]::Truncate(123.456789 * [Math]::Pow(10, 1)) / [Math]::Pow(10, 1)  # 123.4
[Math]::Truncate(123.456789 * [Math]::Pow(10, 2)) / [Math]::Pow(10, 2)  # 123.45
[Math]::Truncate(123.456789 * [Math]::Pow(10, 3)) / [Math]::Pow(10, 3)  # 123.456
[Math]::Truncate(123.456789 * [Math]::Pow(10, 4)) / [Math]::Pow(10, 4)  # 123.4567

関数化してみました

# 切り捨てしたい数と桁を渡す
function Truncate([double]$num, [int]$numDigits = 0)
{
    $m = [Math]::Pow(10, $numDigits)
    return [Math]::Truncate($num * $m) / $m
}

# 実行例
PS C:\temp> Truncate 123.456789 3
123.456



#PowerShell #四捨五入 #切り捨て #切り上げ #コマンドレット #プログラミング学習 #プログラミング初心者 #毎日Note

いいなと思ったら応援しよう!