端数処理
(五捨六入 から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/02/04 00:44 UTC 版)
端数処理(はすうしょり)とは、与えられた数値を一定の丸め幅の整数倍の数値に置き換えることである。平たく、丸め(まるめ)ともいう。
- ^ 「最近接偶数への丸め」、「偶数丸め」、「最近接丸め」、「JIS丸め」、「ISO丸め」、「銀行家の丸め」、「銀行丸め」、「五捨五入」、「偶捨奇入」という用語を採用している文献は、現在のところ発見できていない。詳細は、ノートを参照。
- ^ 負の数の場合も含めた明示的表現としては、そうなる。
- ^ もちろんこれは記数法に依存した名称である。本文では十進法における性質を説明しているが、十二進法において「五捨六入」と呼ばれるであろう処理は通常の半数切り上げである。
- ^ 一般に関数の数値計算の場合、...000 のように 0 が続いていても、下の桁で上の桁からの桁借りが発生するかもしれない。また lexer によるリテラルの読込みの場合、浮動小数点数の表現として本来ありえない桁まで記述されている、
XXX...XXX.5000000000000000000000001
といったような場合の下の桁の扱いをどうすべきか、といった点も問題になる(前述のようなちょうど境界だった場合、下の桁は必ずしも無意味とは言えないかもしれない)。 - ^ JIS Z8401:2019, p.2, 2 e) 「数値を示す場合、常に丸めの幅を示すことが望ましい。」
- ^ 偶数への丸めが推奨されてはおり、徐々に標準となってゆくと思われる[要出典]。Microsoftの一部の環境など、仕様で明示しているものもある。しかし、C99もC++11もJavaもECMAScript(JavaScript)も異なるルールを仕様に定めている。
- ^ このフレーズに含まれる「テーブルメーカー」とは、「数表」を計算し、それを出版せんと企てる者、という意味である。数表は一般に、それに印刷されている桁数の範囲内は必ず正しいものでなければならないことが要求される(であろう)という背景がある。例えば、上限と下限の両方を計算することで結果がある範囲内に必ずあることを保証するといったような手法が、数表の正確さのために活用されてきた、という歴史がある。
五捨六入
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/28 01:06 UTC 版)
小数第一位が5以下ならば切り捨て、6以上ならば切り上げる丸めを「五捨六入」という。ただし、後述するように五捨六入は十進法と十二進法では異なり、十進法では「半数切り捨て」が五捨六入で、十二進法では「半数切り上げ」が五捨六入である。この節では、十進法で「半数切り捨て」を指す五捨六入について述べる。 0.4を足して切り捨てることで得られる。0.55が0へ丸められることから、五捨六入が最近接丸めではないことがわかる。端数がランダムなデータに対しは、やや強い負のバイアスがあるため、そのようなデータに対し五捨六入が使われることはまずない。 五捨六入が実用的なのは、端数が0.1の整数倍のみを取りうる場合に限られる。この場合の五捨六入は、0.1〜0.5で切り捨て、0.6〜0.9で切り上げ(0.5超0.6未満は発生しない)なので、最近接丸めの一種の五捨五超入と同じ結果となる。 例えば、麻雀のとあるローカルルールでは、最終的な得失点を五捨六入する。この場合の端数は常に0.1の整数倍(100の倍数を、1000の倍数に丸める)なので、丸め結果は五捨五超入である。 コンピュータでは、プロセッサによっては四捨五入と五捨六入を均等に使い分け、バイアスを0にする工夫がなされているものがある。
※この「五捨六入」の解説は、「端数処理」の解説の一部です。
「五捨六入」を含む「端数処理」の記事については、「端数処理」の概要を参照ください。
- 五捨六入のページへのリンク