<p>数値を扱う際に数値を丸めることは日常的に行われています。<br /> その方法は、切り捨て/切り上げ/四捨五入 と考えるのが最も一般的であるかと思います。<br /> このように列挙すると他に何があるの？と言う話になりますが...<br /> 四捨五入には実はいろいろな方法があるようです。数年前、Delphi の四捨五入の方法が、一般的によく使用されている下記のような半ば常識とした四捨五入の方法と異なっていることから、Delphi の四捨五入の実装方法である Banker's Rounding (=IEEE754 で規定されている) の内容を調べたことがあります。<br /> その四捨五入の方法とは下記のような仕様でした。</p>
<blockquote>基本的には最も近い整数値に丸めつつも，上下の整数が等しく近い場合には偶数となる方を優先する。<br /> 具体的には、丸めたい一つ下の桁を参照して、その数字が4以下であれば切り捨て6以上であれば切り上げする。5の場合は特殊で、1桁上(丸めたい桁)が奇数なら切り上げそうでなければ切り捨てする。</blockquote>
<p>この調べものの際に、Microsoft の<a href="http://support.microsoft.com/default.aspx?scid=kb;ja;196652">丸めを行うカスタム プロシージャを実装する方法</a>を参照したことがあります。<br /> このページにはいろいろな丸めの方法が記載されており、そのコーディング方法も記載されていて非常に参考になりました。<br /> 最近また見る機会があったので、知らない人もかなり多かったこともあり、自分のメモがてら載っけておきます。</p>