【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