分かりやすく、使いやすく。

端数を四捨五入する方法

スポンサーリンク

PowerShell で四捨五入するには、 Math クラスの Round メソッドを使用します。一般的な四捨五入をする場合、[MidpointRounding]::AwayFromZero を指定します。この指定をしない場合、一般的にはあまり使用しない偶数丸めで処理されてしまい、 1.5 は 2 に、 2.5 も 2 に処理されてしまいます。

  1. 小数点以下第一位を四捨五入して整数にする
  2. 小数点以下第二位を四捨五入して、第一位までの値とする
  3. 小数点以下第N位を四捨五入する
  4. 百の位や千の位など任意の桁で四捨五入する関数


小数点以下第一位を四捨五入して整数にする

サンプルコードは次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
# 1.4999 の小数以下第一位を四捨五入して整数にする。
$num = [Math]::Round(1.4999, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # 1
 
 
# 1.5 の小数以下第一位を四捨五入して整数にする。
$num = [Math]::Round(1.5, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # 2 

マイナスの値の場合は次のように処理されます。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
# -1.4999 の小数以下第一位を四捨五入して整数にする。
$num = [Math]::Round(-1.4999, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # -1
 
 
# -1.5 の小数以下第一位を四捨五入して整数にする。
$num = [Math]::Round(-1.5, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # -2 

小数点以下第二位を四捨五入して、第一位までの値とする

Round メソッドは第二引数に四捨五入した後に残す小数の位を指定することができます。小数点以下第二位を四捨五入して、第一位までの値とする場合のサンプルコードは次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
# 小数点第二位を四捨五入して第一位までの値とする。
$num = [Math]::Round(1.5499, 1, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # 1.5
 
 
# 小数点第二位を四捨五入して第一位までの値とする。
$num = [Math]::Round(1.55, 1, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # 1.6 

マイナスの値を四捨五入した場合の実行結果は次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
# 小数点第二位を四捨五入して第一位までの値とする。
$num = [Math]::Round(-1.5499, 1, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # -1.5
 
 
# 小数点第二位を四捨五入して第一位までの値とする。
$num = [Math]::Round(-1.55, 1, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # -1.6 

小数点以下第N位を四捨五入する

四捨五入した後に残す桁数を第二引数で指定できるので、この引数の値を変更することで四捨五入する位を変更します。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 小数点第二位を四捨五入して第一位までの値とする。
$num = [Math]::Round(1.55555, 1, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # 1.6
 
 
# 小数点第三位を四捨五入して第二位までの値とする。
$num = [Math]::Round(1.55555, 2, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # 1.56
 
 
# 小数点第四位を四捨五入して第三位までの値とする。
$num = [Math]::Round(1.55555, 3, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # 1.556 

マイナスの値を四捨五入した場合の実行結果は次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 小数点第二位を四捨五入して第一位までの値とする。
$num = [Math]::Round(-1.55555, 1, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # -1.6
 
 
# 小数点第三位を四捨五入して第二位までの値とする。
$num = [Math]::Round(-1.55555, 2, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # -1.56
 
 
# 小数点第四位を四捨五入して第三位までの値とする。
$num = [Math]::Round(-1.55555, 3, [MidpointRounding]::AwayFromZero);
 
Write-Host $num; # -1.556 

百の位や千の位など任意の桁で四捨五入する関数

次のサンプルコードの Round 関数は、第二引数の値に応じて次のように四捨五入します。

-1:1の位を切り捨てて10の位までとする。

-2:10の位を切り捨てて100の位までとする。

-3:100の位を切り捨てて1000の位までとする。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 第一引数に四捨五入を行う値を設定(必須)
# 第二引数に何桁目で切り捨てを行うかをマイナスの数値で指定(任意)
function Round([double]$num, [int]$numDigits)
{
    $m = [Math]::Pow(10, $numDigits);
    return [Math]::Round($num * $m, [MidpointRounding]::AwayFromZero) / $m;
}
 
Write-Host (Round 5555 -1); # 5560
Write-Host (Round 5555 -2); # 5600
Write-Host (Round 5555 -3); # 6000
Write-Host (Round 5555 -4); # 10000
Write-Host (Round 5555 -5); # 0
 
Write-Host (Round -5555 -1); # -5560
Write-Host (Round -5555 -2); # -5600
Write-Host (Round -5555 -3); # -6000
Write-Host (Round -5555 -4); # -10000
Write-Host (Round -5555 -5); # 0  
スポンサーリンク
スポンサーリンク