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.5 | 0 | -1 | エラー |
-0.4 | 0 | 0 | 0 |
-0.3 | 0 | 0 | 0 |
-0.2 | 0 | 0 | 0 |
-0.1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 |
0.1 | 0 | 0 | 0 |
0.2 | 0 | 0 | 0 |
0.3 | 0 | 0 | 0 |
0.4 | 0 | 0 | 0 |
0.5 | 0 | 1 | エラー |
0.6 | 1 | 1 | エラー |
0.7 | 1 | 1 | エラー |
0.8 | 1 | 1 | エラー |
0.9 | 1 | 1 | エラー |
1 | 1 | 1 | 1 |
1.1 | 1 | 1 | 1 |
1.2 | 1 | 1 | 1 |
1.3 | 1 | 1 | 1 |
1.4 | 1 | 1 | 1 |
1.5 | 2 | 2 | 2 |
1.6 | 2 | 2 | 2 |
1.7 | 2 | 2 | 2 |
1.8 | 2 | 2 | 2 |
1.9 | 2 | 2 | 2 |
2 | 2 | 2 | 2 |
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
偶数丸めの利点
※もとの数値の合計と端数処理後の合計が近くなる
コメント