四捨五入と切り捨ての違いとは?消費税やExcelで失敗しない端数処理
四捨五入と切り捨ての違いとは?消費税やExcelで失敗しない端数処理について見逃せない 事実を分かりやすい構成で解説いたします。
四捨五入や切り捨てを「知っているつもり」になっている実務家が最も足元をすくわれるのが、マイナス値の切り捨てと、工学・金融の世界で標準となっている銀行丸めと偶数への丸め(最近接偶数への丸め)です。
「-1.5」を切り捨てると「-1」か「-2」か?
数学的な観点と、日常的な言語感覚の間には大きな溝が存在します。日常会話で「-1.5万円の端数を切り捨てる」と言った場合、多くの人はマイナス記号を無視して絶対値を切り捨て、「-1万円」にすることを想起します。
しかし、数学やプログラミングの「床関数(Floor)」の概念では、切り捨てとは「その数値を超えない最大の整数(=数直線上で常に左側の数値)」を指します。数直線上では「-2」は「-1.5」より小さいため、床関数を通すと「-2」に変換されます。一方で絶対値を基準にして切り捨てる処理(ゼロへの丸め/Truncate)を行うと、「-1」になります。
この仕様の違いを把握していないプログラマーやアナリストが、ExcelのINT関数(床関数:-1.5は「-2」になる)とROUNDDOWN関数やTRUNC関数(ゼロ方向への切り捨て:-1.5は「-1」になる)を取り違え、売上値引きや為替差損の集計でマイナス方向に1円ずつズレを累積させる事故が後を絶ちません。
四捨五入が引き起こす「集計の偏り」を解消する銀行丸め
もう一つの重大な盲点が、JIS規格(JIS Z 8401)や国際規格(IEEE 754)に規定されている「偶数への丸め(Round half to even)」、通称「銀行丸め」です。
一般的な四捨五入では、端数が「0.5」のときに常に切り上げられます。しかし、「0.1〜0.4(4通り)」が切り捨てられ、「0.5〜0.9(5通り)」が切り上げられるため、大量のデータを四捨五入して合計すると、全体として必ず正の方向へ数値が膨らむという構造的欠陥を持っています。
この偏りを防ぐため、金融業界や精密測定の現場では「端数がちょうど0.5のときは、直前の数字が偶数になるように丸める」というルールが採用されています。
- 1.5を整数へ丸める場合:直前の整数が奇数(1)なので、偶数である「2」へ切り上げ。
- 2.5を整数へ丸める場合:直前の整数がすでに偶数(2)なので、そのまま「2」へ切り捨て。
プログラミングの数値丸め処理において、Python(標準のround関数)やC#、JavaScriptの一部のライブラリは、この「銀行丸め」をデフォルトで採用しています。一方、ExcelのROUND関数は小学校で習う「通常の四捨五入」を採用しています。そのため、「システムが算出した数値」と「現場がExcelで検算した数値」が微妙に食い違い、社内協議で紛糾するというトラブルが2026年現在のDX推進現場でも頻発しています。