PowerShell Excelライクな整数部の切り上げにも対応したRoundup関数

ExcelライクなPowerShell 用Roundup関数を書いてみました。整数部・小数部のどちらにも対応しています。

Roundup関数

<#
.SYNOPSIS
整数部、小数部数字の切り上げ関数
.DESCRIPTION
ExcelのRoundup関数と同じように、整数部および小数部の切り上げが可能な関数です。
.EXAMPLE
C:\PS> Roundup -value 12.345 -digit 2
12.35
.EXAMPLE
C:\PS> Roundup -value 12.345 -digit -1
20.000
.INPUTS
no specific.
.OUTPUTS
no specific.
.NOTES
2016/11/5 Firest Release.
#>
function Roundup{
param(
[parameter(Mandatory=$true)]
[decimal]$value,
[parameter(Mandatory=$true)]
[ValidateRange(-15,15)]
[int]$digit
)
try{
# if digit is 0 to 15
$value = [math]::round($value, $digit, "AwayFromZero")
}
catch{
# if digit is -1 to -15
$d = [math]::pow(10,[math]::Abs($digit))
if( (0 -ne $value % $d) -and ($d -le $value) ){
$value += + $d - $value % $d
}
}
return $value
}
view raw Roundup.ps1 hosted with ❤ by GitHub

Math.Roundメソッド
.NET Framework MathクラスのRoundメソッドの説明文には「10 進値を指定した小数部の桁数に丸めます。」と説明されており、整数部の切り上げは対象外です。

PowerShellで実行するとエラー内容にデジットは0-15までと書かれています。


スクリプトのパラメーター$digitを範囲指定(-15 to 15)している理由はこの仕様によるものです。
スポンサーリンク

スポンサーリンク