朝会発表テーマ

各種言語のROUND関数の端数処理について

1.端数処理

ここでは数値を整数に揃えることを考える。
端数がある場合に、どちらかの整数に寄せること→端数処理

  • 端数が0.5より小さい場合は切り捨て
  • 端数が0.5より大きい場合は切り上げ
  • 端数が0.5ちょうどの場合は、切り上げ

→「四捨五入

  • 端数が0.5より小さい場合は切り捨て
  • 端数が0.5より大きい場合は切り上げ
  • 端数が0.5ちょうどの場合は、切り捨てか切り上げの内、結果が偶数となる方を選択

→「偶数丸め

図:四捨五入と偶数丸めの丸め結果比較

プログラミング言語及び環境使い方
四捨五入(1) Excel2013 ワークシート関数ROUND(数値, 0)
(2) PHP(バージョン5.3.8) 標準関数round(数値)
(3) MySQL(バージョン5.5.16) 標準関数ROUND(数値)
(4) SQL Server(バージョン2008R2) 標準関数ROUND(数値, 0) (*)
偶数丸め(5) C#、VB.NET (.NET Framework 2.0) 標準関数Math.Round(数値)
(6) Access2013 VBA 標準関数Round(数値)
(7) Excel2013 VBA 標準関数Round(数値)
EXCEL2013 VBA Round(数値)
Access2013 VBA Round(数値)
VB.NET(VS2005、.NET FW2.0) Math.Round(数値)
C#(VS2005、.NET FW2.0) Math.Round(数値)
MySQL5.5.16 ROUND(数値)
PHP5.3.8 ROUND(数値)
EXCEL Round(数値, 0)
T-SQL(2008R2) Round(数値
-2-2-2-2
-1.9-2-2-2
-1.8-2-2-2
-1.7-2-2-2
-1.6-2-2-2
-1.5-2-2-2
-1.4-1-1-1
-1.3-1-1-1
-1.2-1-1-1
-1.1-1-1-1
-1-1-1-1
-0.9-1-1エラー
-0.8-1-1エラー
-0.7-1-1エラー
-0.6-1-1エラー
-0.50-1エラー
-0.4000
-0.3000
-0.2000
-0.1000
0000
0.1000
0.2000
0.3000
0.4000
0.501エラー
0.611エラー
0.711エラー
0.811エラー
0.911エラー
1111
1.1111
1.2111
1.3111
1.4111
1.5222
1.6222
1.7222
1.8222
1.9222
2222
※エラー=expression をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。

2.各種言語で実装されているROUND関数の端数処理

(1)動作が「四捨五入」となっている言語

①Excel2013 ワークシート関数ROUND(数値, 0)
②PHP(バージョン5.3.8) 標準関数round(数値)
③SQL Server(バージョン2008R2) 標準関数ROUND(数値, 0)

(2)動作が「偶数丸め」となっている言語

④C#、VB.NET (.NET Framework 2.0) 標準関数Math.Round(数値)
⑤Access2013 VBA 標準関数Round(数値)
⑥Excel2013 VBA 標準関数Round(数値)
⑦MySQL(バージョン5.5.16) 標準関数ROUND(数値)

※②、④については、追加のパラメータ指定により「四捨五入」か「偶数丸め」かを制御可能

※③についてはManagementStudioで数値が次の範囲の場合にエラーが発生する。
範囲: -1.0<(数値)<-0.5 または +0.5<(数値)<+1.0
エラーメッセージ: expression をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。

参考URL
https://support.office.com/ja-jp/article/ROUND-関数-c018c5d8-40fb-4053-90b1-b3e7f61a213c
http://php.net/manual/ja/function.round.php
https://dev.mysql.com/doc/refman/5.6/ja/mathematical-functions.html#function_round
https://docs.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql
⑤、⑥https://msdn.microsoft.com/ja-jp/library/ms131274(v=vs.110).aspx
https://msdn.microsoft.com/ja-jp/library/office/gg278630.aspx


偶数丸めの利点

※もとの数値の合計と端数処理後の合計が近くなる

コメント