PowerShell,倍精度浮動小数点数を丸める(中間値は偶数)

スポンサーリンク

鍛錬 677

PowerShell,倍精度浮動小数点数を丸める(中間値は偶数)

指定した倍精度浮動小数点数(Double型)の端数処理を行う際に、値を最も近い整数値で丸め、小数部が2つの整数の中間値である場合は最も近い偶数値に丸めるには、.NETオブジェクトにおける Math クラスのスタティックメソッド、Round を使用します。
 
使用方法は、以下に示す通りです。

[Math]::Round(丸める倍精度浮動小数点数)

引数

以下は、上記の引数についてです。

引数
丸める倍精度浮動小数点数 Double

戻り値

以下は、戻り値についてです。

戻り値
丸められた後の数値 Double
スポンサーリンク

スクリプト

以下は、指定した倍精度浮動小数点数を最も近い整数値で丸めて端数処理を行い、小数部が2つの整数の中間値である場合は最も近い偶数値に丸めて端数処理を行うスクリプト、round_even.ps1 です。

今回は、次の数値について確認しています。

丸める倍精度浮動小数点数
7.4、7.5、7.6
8.4、8.5、8.6
9.4、9.5、9.6
取得する値
丸められた後の数値
# 変数初期化
[System.Double]$num = 0
[System.Double]$result = 0
[System.Int32]$i = 0

echo "---------------------------------"

# 7.4 ~ 7.6 の倍精度浮動小数点数を端数処理
$num = 7.4
$result = [Math]::Round($num)
echo "$num --> $result"

$num = 7.5
$result = [Math]::Round($num)
echo "$num --> $result"

$num = 7.6
$result = [Math]::Round($num)
echo "$num --> $result"

echo "---------------------------------"

# 8.4 ~ 8.6 の倍精度浮動小数点数を端数処理
$num = 8.4
$result = [Math]::Round($num)
echo "$num --> $result"

$num = 8.5
$result = [Math]::Round($num)
echo "$num --> $result"

$num = 8.6
$result = [Math]::Round($num)
echo "$num --> $result"

echo "---------------------------------"

# 9.4 ~ 9.6 の倍精度浮動小数点数を端数処理
$num = 9.4
$result = [Math]::Round($num)
echo "$num --> $result"

$num = 9.5
$result = [Math]::Round($num)
echo "$num --> $result"

$num = 9.6
$result = [Math]::Round($num)
echo "$num --> $result"

echo "---------------------------------"
スポンサーリンク

実行結果

以下は、スクリプト round_even.ps1 を実行しています。

PS D:\tmp>
PS D:\tmp> .\round_even.ps1
-----------------------
7.4 --> 7
7.5 --> 8
7.6 --> 8
-----------------------
8.4 --> 8
8.5 --> 8
8.6 --> 9
-----------------------
9.4 --> 9
9.5 --> 10
9.6 --> 10
-----------------------

 
上記に示した通り、指定した倍精度浮動小数点数を丸めることができました。

中間値である 7.5、8.5、9.5 の場合は、それぞれ最も近い偶数値に丸められていることが分かります。

丸める前の中間値 最も近い偶数値 丸めた後の数値
7.5 7 ・・・ 7.5 ・・・ 8 8
8.5 8 ・・・ 8.5 ・・・ 9 8
9.5 9 ・・・ 9.5 ・・・ 10 10
タイトルとURLをコピーしました