【PowerShell】四捨五入する(切り上げ、切り捨てする方法も)

PowerShell

四捨五入する

四捨五入する方法と例を紹介します。

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


# 実行例 ※2つ目の引数が小数第○桁で四捨五入するかを指定しています
[Math]::Round(123.4567890, 0, [MidpointRounding]::AwayFromZero);  # 123
[Math]::Round(123.4567890, 1, [MidpointRounding]::AwayFromZero);  # 123.5
[Math]::Round(123.4567890, 2, [MidpointRounding]::AwayFromZero);  # 123.46
[Math]::Round(123.4567890, 3, [MidpointRounding]::AwayFromZero);  # 123.457
[Math]::Round(123.4567890, 4, [MidpointRounding]::AwayFromZero);  # 123.4568

 

 

切り上げする

切り上げする方法と例を紹介します

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


# 実行例
[Math]::Ceiling(123.4567890 * [Math]::Pow(10, 0)) / [Math]::Pow(10, 0);  #124
[Math]::Ceiling(123.4567890 * [Math]::Pow(10, 1)) / [Math]::Pow(10, 1);  #123.5
[Math]::Ceiling(123.4567890 * [Math]::Pow(10, 2)) / [Math]::Pow(10, 2);  #123.46
[Math]::Ceiling(123.4567890 * [Math]::Pow(10, 3)) / [Math]::Pow(10, 3);  #123.457

 

 

切り捨てする

切り捨てする方法と例を紹介します

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


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

 

 

四捨五入、切り上げ、切り捨てする関数

上の構文を使用して、四捨五入と切り上げ・切り捨てを切り替えることができる関数を作りました。

<#
"=========================================================
'[概  要] 四捨五入をする
'[引  数] targetNum : 対象の数値
'[引  数] Kubun     : 計算区分(1:四捨五入、2:切り上げ、3:切り捨て)
'[引  数] Keta      : 有効桁数(何桁で丸めるか)
'[戻り値] 四捨五入後の数値
'[備  考] 
'========================================================="
#>
Function round($targetNum , $Kubun , $Keta){

    if($Kubun -eq 1){
        #四捨五入
        return [Math]::Round($targetNum, $Keta, [MidpointRounding]::AwayFromZero);

    }elseif($Kubun -eq 2){
        #切り上げ
        $m = [Math]::Pow(10, $Keta);
        if($targetNum -ge 0){
            return [Math]::Ceiling($targetNum * $m) / $m;
        }else{
            # 有効桁数をマイナス値で指定してもうまくいくようにする
            return [Math]::Floor($targetNum * $m) / $m;
        } 

    }elseif($Kubun -eq 3){
        #切り捨て
        $m = [Math]::Pow(10, $Keta);
        return [Math]::Truncate($targetNum * $m) / $m;
    }
    
}

# 上の関数を呼び出し
# 数値「12345.6789」を小数点以下四捨五入
round 12345.6789 1 0    # 12346

# 数値「12345.6789」を小数第2位で四捨五入
round 12345.6789 1 2    # 12345.68

# 数値「12345.6789」を小数第3位で四捨五入
round 12345.6789 1 3    # 12345.679

# 数値「12345.6789」を小数第3位で切り上げ
round 12345.12345 2 3    # 12345.124

# 数値「12345.6789」を小数第3位で切り捨て
round 12345.12345 3 3    # 12345.123