消費税の端数処理はROUND・ROUNDUP・ROUNDDOWNのどれ?式の違いと内税の逆算【LibreOfficeで計算して確認】
見積書や請求書で消費税を計算すると、「小数が出たとき、どう丸めるか」で金額が1円ずれることがあります。Excelでは ROUND(四捨五入)・ROUNDUP(切り上げ)・ROUNDDOWN(切り捨て) のどれかを選びますが、同じ金額に3つを当てると結果が変わるのは、どこからでしょうか。
この記事では、同じ金額で3つの式を並べて比べ、内税(税込金額)から消費税を逆算する式、桁を指定する書き方、マイナスの扱い、「表示だけ丸めた」ときの合計のずれまで、実際に計算した結果を示します。
出典: 筆者がLibreOfficeで計算して確認(検証スクリプト: site/verify/round_tax.py)。外部サイトの説明は参照していません。Excelでは未確認です。なお、どの端数処理を使うべきか(法令や取引上の決まり)はこの記事では判断しません。取引先や社内のルール、公式の案内で確認してください。
先に結論
税抜金額が A2 に入っているとして、消費税10%の式は次の3通りです。
切り捨て: =ROUNDDOWN(A2*0.1,0)
切り上げ: =ROUNDUP(A2*0.1,0)
四捨五入: =ROUND(A2*0.1,0)
最後の 0 は「小数点以下0桁にする(=整数にする)」の意味です。金額が整数のとき、結果が分かれるのは、A2 の下1桁が0でないときだけです(下1桁が0なら税額がちょうど整数になり、3つとも同じ)。
同じ金額で並べた結果
LibreOfficeで再計算した結果です(税率10%)。
| 税抜金額 | 切り捨て | 切り上げ | 四捨五入 |
|---|---|---|---|
| 1,000 | 100 | 100 | 100 |
| 1,004 | 100 | 101 | 100 |
| 1,005 | 100 | 101 | 101 |
| 12,345 | 1,234 | 1,235 | 1,235 |
| 99,995 | 9,999 | 10,000 | 10,000 |
ポイントは2つです。
- 下1桁が0なら3つとも同じです(1,000)。
- 下1桁が5のとき(1,005 や 12,345)は、四捨五入と切り上げが同じ値になり、切り捨てだけが小さくなります。4以下(1,004)では、四捨五入は切り捨てと同じです。
境界の値と乱数500件、合計518件の金額で、3つの式の結果を整数計算(切り捨ては n÷10 の商、切り上げは商+余りがあれば1、四捨五入は (2n+10)÷20 の商)と照合し、不一致は0件でした。
税込金額から消費税を逆算する(内税)
税込の金額 M から消費税額を求めるときは、税率10%なら「M × 10 ÷ 110」です。
切り捨て: =ROUNDDOWN(M2*10/110,0)
四捨五入: =ROUND(M2*10/110,0)
税抜金額: =M2-ROUNDDOWN(M2*10/110,0)
税込 10,005 円で試すと、
| 求めるもの | 結果 |
|---|---|
| 消費税額(切り捨て) | 909 |
| 消費税額(四捨五入) | 910 |
| 税抜金額(税込 − 切り捨てた税額) | 9,096 |
| 税抜金額(税込 ÷ 1.1 の切り捨て) | 9,095 |
税抜を出す方法が2通りあると、1円ずれることがあります。 実際、518件の金額のうち大半で、「税込 − 税額」と「税込 ÷ 1.1 の切り捨て」の結果は食い違いました(税込1円なら前者が1、後者が0)。どちらを使うかは、先に「税額」と「税抜」のどちらを正とするかを決めてから選んでください。
桁を指定して丸める(ROUND の第2引数)
第2引数を変えると、小数点以下や百の位などでも丸められます。LibreOfficeで確認した結果です。
| 元の数 | 第2引数 | ROUND | ROUNDUP | ROUNDDOWN |
|---|---|---|---|---|
| 1234.5678 | 2 | 1234.57 | 1234.57 | 1234.56 |
| 1234.5678 | 0 | 1235 | 1235 | 1234 |
| 1234.5678 | -2 | 1200 | 1300 | 1200 |
| 1250 | -2 | 1300 | 1300 | 1200 |
| 1349 | -2 | 1300 | 1400 | 1300 |
- 第2引数が正なら小数点以下の桁数、0なら整数、マイナスなら整数部の桁(-2は百の位)で丸めます。
- 1250 を百の位で四捨五入すると 1300 でした(ちょうど半分は上に丸まる)。
マイナスの金額はどうなる?
値引きや返品で金額がマイナスになるときの結果です。
| 元の数 | 桁 | ROUND | ROUNDUP | ROUNDDOWN | INT |
|---|---|---|---|---|---|
| -1234.5 | 0 | -1235 | -1235 | -1234 | -1235 |
| -1250 | -2 | -1300 | -1300 | -1200 | -1250 |
| -0.5 | 0 | -1 | -1 | 0 | -1 |
- ROUNDUP・ROUNDDOWN は「0から遠ざかる/近づく」方向で動きます。マイナスの ROUNDDOWN は 0 に近い側(-1234.5 → -1234)になります。
- INT は「小さい方」に切り捨てるので、マイナスでは ROUNDDOWN と結果が変わります(-1234.5 → -1235)。マイナスを含む表で切り捨てるなら、ROUNDDOWN と INT を混ぜないことです。
「表示だけ丸めた」ときの合計のずれ
セルの表示形式で「小数点以下0桁」にしても、中身の値は丸まりません。1.4 を3行並べて試すと、
- 表示は「1」「1」「1」なのに、SUM は 4.2(表示は4)
- 各行を
=ROUND(A1,0)で丸めてから足すと 3
となりました。画面の数字を足し算して合計が合わないときは、表示だけでなく式で丸めているかを見てください。金額を丸めるなら、ROUND系の式で値そのものを丸め、その丸めた値を合計するのが確実です。
つまずきやすい点
- 浮動小数点の誤差:
A2*0.1のように小数をかける式は、ごく小さな誤差が出る可能性があります。今回の518件では問題は出ませんでしたが、金額が非常に大きいときはA2/10のように割り算で書く方法もあります(この記事では未検証)。 - 端数処理のタイミング: 明細ごとに丸めるか、合計に対して1回だけ丸めるかで、合計が変わります。これも取引先や社内のルールで決めます。
- 軽減税率(8%)が混ざる場合: 税率ごとに別々に計算する必要があるなど、この記事の範囲を超えます。
注意点: この記事ができないこと
- どの端数処理が適切か、インボイスなどの要件を満たすかの判断はしません。
- Excel(Microsoft)での動作確認はしていません(LibreOfficeのみ)。
- 税率は10%のみ扱いました。
見積書のひな形が必要なら
この記事の式は、自分で作る表にそのまま使えます。工事・リフォーム向けのひな形を探しているなら、運営者が作った工事・リフォーム用 見積書テンプレート(Excel・980円)があります。数量×単価(四捨五入)、諸経費率、値引き、消費税10%(切り捨て)、税込合計を自動計算し、明細は20行、A4縦1枚で印刷できます。端数処理の方法(切り捨て・四捨五入の切り替え)を選ぶ機能はありません。軽減税率の混在や、インボイス要件の保証もできません。Excelの確認はWindowsデスクトップ版16のみです。(これは運営者の商品の案内です。)
見積の合計を先にさっと確かめたいときは、無料の見積の合計計算ツールも使えます(入力は外部に送信されません)。計算の順番は、見積書の合計・税込計算をExcelで自動にする式で解説しています。
まとめ
- 消費税の式は
ROUNDDOWN(A2*0.1,0)(切り捨て)・ROUNDUP(切り上げ)・ROUND(四捨五入)。下1桁が0なら3つとも同じで、違いが出るのは端数があるとき - 税込から逆算するなら
M*10/110を丸める。税抜は「税込−税額」と「税込÷1.1」で1円ずれることがある - 桁指定は第2引数。マイナスでは ROUNDDOWN と INT が違う動きになる
- 表示形式だけでは値は丸まらない。合計が合わないときは式で丸めているか確認する
- 518件+桁指定・マイナス10ケースをLibreOfficeで確認(Excelは未確認)。どれを使うべきかは取引先・公式の案内で確認する
参考にした情報
- 出典: 筆者がLibreOfficeで計算して確認(検証スクリプト: site/verify/round_tax.py)