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

Excel の RoundDown と同じ方法で端数を切り捨てる方法

スポンサーリンク

PowerShell で端数の切り上げを行う場合、 Math クラスの Truncate メソッドや Floor メソッドを使うことができますが、両メソッドには、切り上げを行う桁数を指定できないという業務システムでは扱いづらい特徴があります。また Floor メソッドはマイナスの数値の場合、切り捨て後の数値がゼロから離れた値になるという特徴があり、そのまま使用すると Excel の RoundDown 関数のような処理はできません。

その為、PowerShell で Excel の RoundDown 関数の同様の処理を行うには次の関数を定義します。

PowerShell(RoundDown関数と同じ切り下げを行う関数)
1
2
3
4
5
6
7
8
9
# 第一引数に切り捨てを行う値を設定(必須)
# 第二引数に何桁目で切り捨てを行うか設定(任意)
#         ・プラスの値:小数点以下第N位より小さい位を切り捨て
#         ・マイナスの値:-1なら1の位、-2なら10の位より小さい位を切り捨て
function RoundDown([double]$num, [int]$numDigits = 0)
{
    $m = [Math]::Pow(10, $numDigits);
    return [Math]::Truncate($num * $m) / $m;
} 

上記の関数をテストした結果は次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# プラスの数値のテスト
Write-Host (RoundDown 9999.9999 4); # 9999.9999
Write-Host (RoundDown 9999.9999 3); # 9999.999
Write-Host (RoundDown 9999.9999 2); # 9999.99
Write-Host (RoundDown 9999.9999 1); # 9999.9
Write-Host (RoundDown 9999.9999 0); # 9999
Write-Host (RoundDown 9999.9999 -1);# 9990
Write-Host (RoundDown 9999.9999 -2);# 9900
Write-Host (RoundDown 9999.9999 -3);# 9000
Write-Host (RoundDown 9999.9999 -4);# 0
 
# マイナスの数値のテスト
Write-Host (RoundDown -9999.9999 4); # -9999.9999
Write-Host (RoundDown -9999.9999 3); # -9999.999
Write-Host (RoundDown -9999.9999 2); # -9999.99
Write-Host (RoundDown -9999.9999 1); # -9999.9
Write-Host (RoundDown -9999.9999 0); # -9999
Write-Host (RoundDown -9999.9999 -1);# -9990
Write-Host (RoundDown -9999.9999 -2);# -9900
Write-Host (RoundDown -9999.9999 -3);# -9000
Write-Host (RoundDown -9999.9999 -4);# 0 
スポンサーリンク
スポンサーリンク