VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/03/10(Thu) 11:35
投稿者ダンボ
URL
タイトル「銀行丸め」

Say さん、いつもお世話になっております。

> 四捨五入ではありません。銀行丸めです。

「銀行丸め」聞いたことはあるなあ、という程度なので、復習をしました。
(単なる憶測)/演算子が「銀行丸め」を採用した背景はファームウェアのアルゴリズムで一番速いのかな

hhttp://support.microsoft.com/default.aspx?scid=kb;ja;418216
Office 2000 より VBA には Round 関数が追加されました。VBA の Round 関数は、"算術型" の丸め処理では
なく "銀行型" の丸め処理を行います。
"算術型" の丸め処理では ".5" は常に切り上げられますが、"銀行型" の丸め処理の場合は ".5" は、結果が偶
数になるように丸め処理が行われ、切り上げられることも、切り捨てられることもあります。
"算術型" と "銀行型" の丸め処理の違いは、以下の表のようになります。
    数値   算術型   銀行型 (VBA)
  -----------------------------
    1.5     2        2
    2.5     3        2
    3.5     4        4
    4.5     5        4
    5.5     6        6
    6.5     7        6

hhttp://support.microsoft.com/default.aspx?scid=kb;ja;196652
丸めを行った値どうしを加えるとき、.5 を常に同じ方向に丸めると、加える値が多くなるにつれて値の偏りが大
きくなります。この誤差を最小限に抑えるための方法の 1 つが銀行型丸め (Banker's Rounding) です。
銀行型丸めの場合、.5 は切り上げられることもあれば、切り捨てられることもあります。慣例では、最も近い偶
数に丸められます。つまり 1.5 と 2.5 はどちらも 2 に丸められ、3.5 と 4.5 はどちらも 4 に丸められます
。銀行型丸めは対称的なアルゴリズムです。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -