この特別編では、会員システムの仕事で出会う「なぜだろう」を、大人の算数・国語・論理的思考の三つの視点から一つずつひも解きます。第1部は「お金を扱う大人の算数」。その第1回は、もっとも身近な「金額が合わない」という疑問からはじめます。
「15%引き」と決めただけで、金額は一つに決まるのか。同じ注文が、なぜ違う金額になるのか。
要点先に、この回の要点
同じ「15%引き」でも、円未満をどの単位(商品ごと/明細ごと/注文全体)で丸めるかで、最終金額は変わります。どちらかがバグなのではなく、「丸めのルールを決めていない」ことが原因です。
- 1個ずつ丸めてから合計した額と、合計してから丸めた額は、一致するとは限らない(端数を捨てる回数が違う)。
- 「15%割引」だけでは仕様が足りない。丸める単位と丸め方まで決めて初めて、答えが一つになる。
- 会員・決済システムでは、「誰が決め・どの単位で丸め・何を記録するか」を仕様として明示する。
同じ商品を、同じ数だけ、同じ割引率で売る。それなら、誰が計算しても同じ金額になるように思えます。ところが、システムでは、同じ注文なのに金額が合わないことがあります。原因は、難しい計算ではありません。どこで小数点以下を捨てたか。それだけです。
100円の商品を3個、15%引きにする
税込100円の商品を3個購入し、15%割引にするとします。二通りの計算のしかたを、並べてみましょう。
どちらも255円です。この例だけを見ると、単価に割引を掛けても、合計に割引を掛けても同じように見えます。
ぱっと見ではわからないかもしれません。理由はシンプルで、100円 × 85% = 85円と、割引後がちょうど整数になり、切り捨てる端数(小数点以下)がそもそも生まれないからです。捨てるものがなければ、どこで捨てても結果は変わりません。差が出るのは、割引後に「84.15円」のような端数が生まれてからです。次に、その端数が出る例を見てみます。
99円の商品に変えてみる
今度は、税込99円の商品を3個、15%引きにします。
→ 円未満を切り捨てて 84円
→ 円未満を切り捨てて 252円
この例でも、金額は合いました。では、数量を10個に増やしてみます。
→ 円未満を切り捨てて 841円
違うのは、掛け算の順番ではありません
違うのは、どこで円未満を切り捨てたかです。1個ずつ計算する方法では、商品1個ごとに0.15円を捨てています。10個なら、端数を10回捨てることになります。一方、合計してから計算する方法では、最後に一度だけ端数を捨てます。
1個ずつ丸めてから足した金額と、
全部を足してから丸めた金額は、同じになるとは限らない。
実際に、あなたの数字で試せます。数量を増やすと、差がどう育つか——
「15%割引」だけでは、まだ足りません
お客様から、「この商品を15%割引にしてください」と言われたとします。一見、十分な指示に見えます。しかし、システムを作るには、もう一つ決める必要があります。
- 1個ずつ割り引くのか
- 数量を掛けた合計から割り引くのか
- 円未満は切り捨てるのか
- 四捨五入するのか
ここが決まっていなければ、答えは一つになりません。どちらかがバグというわけではありません。計算のルールが違うだけです。
誰が決め、何が計算され、何を残すのか
同じ「15%引き」でも、どの単位で丸めるかで金額は変わります。ここでは商品単位・明細単位・注文単位の違いに集中し、判断・計算・記録に分けて整理します。
- 丸める単位(商品・明細・注文)
- 集計前か、集計後か
- 表示金額と内部計算値の関係
- 各単位での割引額を求める
- 明細合計を求める
- 注文合計を求める
- 丸め前金額
- 確定単価
- 明細金額
- 注文合計
15%引きにして、合計を出す。
割引後価格は商品1点単位で確定し、確定後の単価へ数量を乗じる。注文合計に対して割引額を再計算しない。
商品ごとに丸めるか、注文全体で丸めるか——どちらか一方が常に正しいわけではありません。重要なのは、どの単位で丸めるかを決め、同じ注文なら誰が計算しても同じ金額を再現できることです。
カートの合計と、明細を足した金額が1円違う。お客様から「計算が間違っている」と問い合わせが入る。
割引率だけ決めても、計算方法は完成しません。何に割引を掛けるのか。どの段階で端数を処理するのか。そこまで決めて、初めて一つの金額になります。小さな1円の差に見えても、その後ろには、まだ決められていない計算ルールが隠れていることがあります。
よくあるご質問(FAQ)
円未満の端数をどの単位で丸めるかが違うからです。商品ごとに丸めると端数を何度も捨て、注文全体で丸めると一度だけになります。どちらも計算としては正しく、ルールの違いです。
常に正しい単一の正解はありません。商材・会計・表示の要件によって適切な単位は変わります。大切なのは、単位を決めて一貫させ、仕様として記録しておくことです。
1件は数円でも、件数と期間で積み上がり、会計の突合や返金計算で合わなくなります。最初に丸めの仕様を決めておくのが安全です。
