消費税込みの価格を割引きしてもらうのと、税抜価格を割引してもらって割引後に消費税を加えて支払うのとでは、どちらが得だろうか?
数式にすると、どちらも同じように見える。
\begin{empheq}[left=\empheqlbrace]{align}
税込価格割引_{計算値}&=(税抜き価格 \times (1+消費税率)) \times (1-割引率) \label{eq:税込価格割引理論式}\\
税抜価格割引_{計算値}&=(税抜き価格 \times (1-割引率)) \times (1+消費税率) \label{eq:税抜価格割引理論式}
\end{empheq}
税込価格を割引した場合 \eqref{eq:税込価格割引理論式} と税抜き価格を割引した場合 \eqref{eq:税抜価格割引理論式} の違いは、掛け算の順番だけで、計算結果は同じになる。
しかし、実際の価格は \eqref{eq:税込価格割引理論式} や \eqref{eq:税抜価格割引理論式} とは異なる。それは、計算途中で小数点以下を切り捨てる場合が多いからである。
例えば、税拭価格85円の商品の消費税率10%での税込価格は93円(計算値は93.5円)で、税込価格を3割引きすると65円($93 \times 0.7 =65.1$)である。税抜価格を3割引きすると59円(計算値は59.5円)で、消費税5円($59 \times 0.1 =5.9$)を加えると64円になる。税抜価格を割引した方が安い。小数点以下を切り捨てなければ65円(計算値は65.45円)である。
例えば、税拭価格86円の商品の消費税率10%での税込価格は94円(計算値は94.6円)で、税込価格を3割引きすると65円($94 \times 0.7 =65.8$)である。税抜価格を3割引きすると60円(計算値は60.2円)で、消費税6円($60 \times 0.1 =6.0$)を加えると66円になる。税込価格を割引した方が安い。小数点以下を切り捨てなければ66円(計算値は66.22円)である。
では、そのように価格の計算途中で小数点以下を切り捨てた場合、税込価格の割引と税抜価格の割引とでは、どちらの方が安くなりやすいのだろうか?
結論は、税込価格の割引より税抜価格の割引の方が安くなりやすい。
Excelを使って、税抜価格1円から10,000円までについて計算して確かめたところ、税込価格の割引の方が安かったのは600件、税抜価格の割引の方が安かったのは2400件、同じになったのは7000件だった。次のグラフは、消費税率10%、割引率3割で、税抜価格を割引した場合と税込価格を割引した場合の差額を税抜価格0円から100円までプロットしたものである。プラスになれば税込価格を割引した方が安く、マイナスになれば税抜価格を割引した方が安い。この範囲だけを見ても、税抜価格の割引の方が安くなりやすいことが分かる。税抜価格1円から100円までで税込価格の割引の方が安かったのは6件、税抜価格の割引の方が安かったのは24件である。後に証明するが、100円から200円までや、9,900円から10,000円までをプロットしても全く同じグラフになる。100円周期で同じグラフになる。

上記の税拭価格85円と86円の例を見ると、計算途中で小数点以下を切り捨てずに計算した場合、税拭価格85円の場合は65円で、計算途中で小数点以下を切り捨てて税抜価格を割引した場合は64円で1円得している。税抜価格86円の場合は、計算途中で小数点以下を切り捨てなければ66円だが、計算途中で小数点以下を切り捨てて税込価格を割引した場合は65円で1円得している。このように、税込価格を割引しても税抜価格を割引しても損しているわけではなく、どちらかが得している場合があるだけで、どちらも得している場合もある。その様子をグラフにすると、次のようになる。1円から100円までの間で、税抜価格の割引で得した回数が45件、税込価格の割引では27件、どちらも得した場合が21件である。税抜価格の割引の方が得しやすいことが分かる。

念のため、税抜価格の方が安い件数と税込価格の方が安い件数について、10円間隔での件数をプロットすると次のグラフのようになる。Excelで10,000円まで計算してあるが、グラフが見やすくなるように4.000円までを示してある。美しく100円周期になっていることが分かる。

このグラフの0円から100円までは次のようになっている。

さて、以下は「税込価格の割引より税抜価格の割引の方が安くなりやすい」ことの証明である。
数式で証明するため、次のように変数を定義する。
$\left\{
\begin{aligned}
x &=税抜価格 \\
\alpha &= \tfrac{a}{A} = 1 + 消費税率 && \left(\tfrac{a}{A}は既約分数\right) \\
\beta &= \tfrac{b}{B} = 1 - 割引率 && \left(\tfrac{b}{B}は既約分数\right)
\end{aligned}
\right.$
この変数を使うと、小数点以下を切り捨てなかった上記の \eqref{eq:税込価格割引理論式} と \eqref{eq:税抜価格割引理論式} は次のようになる。
\begin{empheq}[left=\empheqlbrace]{align}
税込価格割引_{計算値}&=(x \times \alpha) \times \beta = \alpha \beta x = \tfrac{a}{A} \tfrac{b}{B} x \label{eq:税込価格割引厳密計算式}\\
税抜価格割引_{計算値}&=(x \times \beta) \times \alpha = \alpha \beta x = \tfrac{a}{A} \tfrac{b}{B} x \label{eq:税抜価格割引厳密計算式}
\end{empheq}
計算途中と最後に小数点以下を切り捨てた場合の価格は次のようになる。
\begin{empheq}[left=\empheqlbrace]{align}
税込価格割引_{支払額}&= \left\lfloor \beta \lfloor \alpha x \rfloor \right\rfloor= \left\lfloor \tfrac{b}{B} \lfloor \tfrac{a}{A} x \rfloor \right\rfloor \label{eq:税込価格割引支払額}\\
税抜価格割引_{支払額}&= \left\lfloor \alpha \lfloor \beta x \rfloor \right\rfloor= \left\lfloor \tfrac{a}{A} \lfloor \tfrac{b}{B} x \rfloor \right\rfloor \label{eq:税抜価格割引支払額}
\end{empheq}
計算途中で小数点以下を切り捨てた場合に得した額は、厳密計算値である \eqref{eq:税込価格割引厳密計算式} と \eqref{eq:税抜価格割引厳密計算式} の整数部分(小数点以下を切り捨てた値)から、それぞれの場合の支払額 \eqref{eq:税込価格割引支払額} と \eqref{eq:税抜価格割引支払額} を引いた額になる。
\begin{empheq}[left=\empheqlbrace]{align}
税込価格割引_{差額}&= \left\lfloor \alpha \beta x \right\rfloor - \left\lfloor \beta \lfloor \alpha x \rfloor \right\rfloor \label{eq:税込価格割引差額}\\
税抜価格割引_{差額}&= \left\lfloor \alpha \beta x \right\rfloor - \left\lfloor \alpha \lfloor \beta x \rfloor \right\rfloor \label{eq:税抜価格割引差額}
\end{empheq}
ここで、小数の小数点以下の部分を $\{小数\}$ と書くことにすると、\eqref{eq:税込価格割引差額} は次のように変形できる。
\begin{aligned}
税込価格割引_{差額}&= \left\lfloor \alpha \beta x \right\rfloor - \left\lfloor \beta \lfloor \alpha x \rfloor \right\rfloor \\
&= \left\lfloor \alpha \beta x \right\rfloor - \left\lfloor \beta ( \alpha x -\{ \alpha x \}) \right\rfloor \\
&= \left\lfloor \alpha \beta x \right\rfloor - \left\lfloor \alpha \beta x - \beta \{ \alpha x \} \right\rfloor \\
&= \lfloor \alpha \beta x \rfloor - \left\lfloor \lfloor \alpha \beta x \rfloor +\{ \alpha \beta x \} - \beta \{ \alpha x \} \right\rfloor \\
&= \lfloor \alpha \beta x \rfloor - \lfloor \alpha \beta x \rfloor - \left\lfloor \{ \alpha \beta x \} - \beta \{ \alpha x \} \right\rfloor \\
&= -\left\lfloor \{ \alpha \beta x \} - \beta \{ \alpha x \} \right\rfloor \\
&= \left\lceil \beta \{ \alpha x \} - \{ \alpha \beta x \} \right\rceil
\end{aligned}
\eqref{eq:税抜価格割引差額} も同じように変形できて、まとめると、\eqref{eq:税込価格割引差額} と \eqref{eq:税抜価格割引差額} は次のようになる。
\begin{empheq}[left=\empheqlbrace]{align}
税込価格割引_{差額}&= \left\lceil \beta \{ \alpha x \} - \{ \alpha \beta x \} \right\rceil \label{eq:税込価格割引差額_天井関数}\\
税抜価格割引_{差額}&= \left\lceil \alpha \{ \beta x \} - \{ \alpha \beta x \} \right\rceil \label{eq:税抜価格割引差額_天井関数}
\end{empheq}
念のため、$\lfloor p \rfloor $ は実数 $p$ 以下の最大の整数であり、$\lceil p \rceil $ は実数 $p$ 以上の最小の整数である(参照)。
さて、$0 \le \{小数\} \lt 1$ であるから、
$\left\{
\begin{aligned}
0 \le \beta \{ \alpha x \} \lt \beta \\
0 \le \alpha \{ \beta x \} \lt \alpha \\
0 \le \{ \alpha \beta x \} \lt 1
\end{aligned}
\right.$
そして、$\alpha$ と $\beta$ の定義から、$0 \le \beta \le 1 \le \alpha$ であるから、\eqref{eq:税込価格割引差額_天井関数} と \eqref{eq:税抜価格割引差額_天井関数} は次の範囲の整数である。
\begin{empheq}[left=\empheqlbrace]{align}
0 &\le 税込価格割引_{差額} \le 1 \label{eq:税込価格割引差額_範囲}\\
0 &\le 税抜価格割引_{差額} \le \lceil \alpha \rceil &&(1 \le \alpha) \label{eq:税抜価格割引差額_範囲}
\end{empheq}
このように、計算途中で小数点以下を切り捨てたことによる得した額は、税込価格を割引した場合($税込価格割引_{差額}$)は最大で1円であるのに対して\eqref{eq:税込価格割引差額_範囲} 、税抜価格を割引した場合($税抜価格割引_{差額}$)は1円を超えることがある\eqref{eq:税抜価格割引差額_範囲}。例えば、税抜価格77円で、消費税率が30%、割引率が30%の場合、税抜価格を割引したら税込68円(税抜53円)で、計算途中で小数点以下を切り捨てずに最後に小数点以下を切り捨てれば税込70円なので、2円も得することになる。これだけで印象では税抜価格を割引した方が得なように感じる。
さて、次に式 \eqref{eq:税込価格割引支払額} と \eqref{eq:税抜価格割引支払額} の差を確認する。
\begin{alignat*}{2}
&税抜価格割引_{支払額} &&- 税込価格割引_{支払額}\\
=& \left\lfloor \alpha \lfloor \beta x \rfloor \right\rfloor &&- \left\lfloor \beta \lfloor \alpha x \rfloor \right\rfloor \\
=& \left\lfloor \alpha ( \beta x -\{ \beta x \}) \right\rfloor &&- \left\lfloor \beta ( \alpha x -\{ \alpha x \}) \right\rfloor \\
=& \left\lfloor \alpha \beta x - \alpha \{ \beta x \} \right\rfloor &&- \left\lfloor \alpha \beta x - \beta \{ \alpha x \} \right\rfloor \\
=& \left\lfloor \lfloor \alpha \beta x \rfloor +\{ \alpha \beta x \} - \alpha \{ \beta x \} \right\rfloor &&- \left\lfloor \lfloor \alpha \beta x \rfloor +\{ \alpha \beta x \} - \beta \{ \alpha x \} \right\rfloor \\
=& \lfloor \alpha \beta x \rfloor + \left\lfloor \{ \alpha \beta x \} - \alpha \{ \beta x \} \right\rfloor &&- \lfloor \alpha \beta x \rfloor - \left\lfloor \{ \alpha \beta x \} - \beta \{ \alpha x \} \right\rfloor \\
=& \left\lfloor \{ \alpha \beta x \} - \alpha \{ \beta x \} \right\rfloor &&-\left\lfloor \{ \alpha \beta x \} - \beta \{ \alpha x \} \right\rfloor \\
=& - \left\lceil \alpha \{ \beta x \} - \{ \alpha \beta x \} \right\rceil &&+ \left\lceil \beta \{ \alpha x \} - \{ \alpha \beta x \} \right\rceil
\end{alignat*}
\eqref{eq:税込価格割引差額_天井関数} と \eqref{eq:税抜価格割引差額_天井関数} の差と同じ数式になった。
\begin{equation}\begin{split}
&税抜価格割引_{支払額} &&- 税込価格割引_{支払額}\\
=&税込価格割引_{差額} &&- 税抜価格割引_{差額}\\
=& \left\lceil \beta \{ \alpha x \} - \{ \alpha \beta x \} \right\rceil &&- \left\lceil \alpha \{ \beta x \} - \{ \alpha \beta x \} \right\rceil \label{eq:支払額差額}
\end{split}\end{equation}
天井関数は広義単調増加関数(横軸の値の増加で縦軸の値が減ることのない関数)なので、$p \ge q$ ならば $\lceil p \rceil \ge \lceil q \rceil$ であるから、\eqref{eq:支払額差額} の符号を調べるには、次の式の符号を調べれば良い。
\begin{equation}\begin{split}
f(x) &= ( \beta \{ \alpha x \} - \{ \alpha \beta x \} ) - ( \alpha \{ \beta x \} - \{ \alpha \beta x \} )\\
&= \beta \{ \alpha x \} - \alpha \{ \beta x \} \label{eq:支払額差額_符号確認式}
\end{split}\end{equation}
$f(x) \lt 0$ ならば税抜価格の割引の方が得で、$f(x) \gt 0$ ならば税込価格の割引の方が得である。そこで、$f(x) \lt 0$ になりやすいのか、$f(x) \gt 0$ になりやすいのかを調べ、$f(x) \lt 0$ になりやすいのであれば、「税込価格の割引より税抜価格の割引の方が安くなりやすい」と言える。
$\{ \alpha x \}$ と $\{ \beta x \}$ は$[0, 1)$ 上で一様に分布しているので、それぞれの期待値は $\frac{1}{2}$ になる。したがって、$f(x)$ の期待値 $E[f(x)]$ は次のようになる。
\begin{equation}\begin{split}
E[f(x)] &= E[(\beta \{ \alpha x \} - \alpha \{ \beta x \})]\\
&= \beta \left( \frac{1}{2} \right)- \alpha \left( \frac{1}{2} \right)\\
&= \frac{\beta - \alpha}{2} \label{eq:支払額差額_期待値}
\end{split}\end{equation}
$\alpha$ と $\beta$ の定義から $0 \le \beta \le 1 \le \alpha$ なので、$E[f(x)] \le 0$ である。したがって、$f(x) \gt 0$ よりも $f(x) \lt 0$ になりやすく、税込価格の割引より税抜価格の割引の方が安くなりやすい。
次に、Excelを使って税抜価格1円から10,000円までについて計算して確かめたところ100円周期のグラフになった理由についてである。消費税率10%、割引率3割でグラフを作成したので周期が100円になったが、以下に示すように、消費税率と割引率を変えると周期も変わる。
税拭き価格を割引した場合と税込価格を割引した場合の差額は式\eqref{eq:支払額差額}で表せる。改めて書くと次のようになる。
\begin{equation}\begin{split}
g(x) &= 税抜価格割引_{支払額} - 税込価格割引_{支払額}\\
&= \left\lceil \beta \{ \alpha x \} - \{ \alpha \beta x \} \right\rceil - \left\lceil \alpha \{ \beta x \} - \{ \alpha \beta x \} \right\rceil\\
&= \left\lceil \tfrac{b}{B} \{ \tfrac{a}{A} x \} - \{ \tfrac{ab}{AB} x \} \right\rceil - \left\lceil \tfrac{a}{A} \{ \tfrac{b}{B} x \} - \{ \tfrac{ab}{AB} x \} \right\rceil \label{eq:支払額差額2}
\end{split}\end{equation}
$\{ \tfrac{a}{A} x \}$ は$x$が$A$の倍数の時に周期的に$0$になり、$\{ \tfrac{b}{B} x \}$ は$x$が$B$の倍数の時に周期的に$0$になる。$\{ \tfrac{ab}{AB} x \}$ は$x$が$AB$の倍数の時に周期的に$0$になるが、$\tfrac{ab}{AB}$が約分できるときは、さらに小さな周期で$0$になる。
$\{ \tfrac{ab}{AB} x \}$ の周期を$T_{1}$、$\{ \tfrac{a}{A} x \}$ の周期を$T_{2}$、$\{ \tfrac{b}{B} x \}$ の周期を$T_{3}$とすると、それぞれの周期は次のようになる。
\begin{empheq}[left=\empheqlbrace]{align}
T_{1} &=\frac{AB}{\text{gcd}(ab, AB)} &(\text{gcd}(ab, AB)はabとAbの最大公約数) \label{eq:T1}\\
T_{2} &=A \label{eq:T2}\\
T_{3} &=B \label{eq:T3}
\end{empheq}
式\eqref{eq:支払額差額2} の第1項の天井関数の中身と、第2項の天井関数の中身が同時に元に戻った時に、$g(x)$ は元に戻る。つまり、同時に、$\{ \tfrac{ab}{AB} x \}$ が$0$になり、$\{ \tfrac{a}{A} x \}$ が$0$になり、$\{ \tfrac{b}{B} x \}$ が$0$になった時に、$g(x)$ は$0$になり、$g(x)$ の周期 $T$ は $T_{1}$、$T_{2}$、$T_{3}$ の最小公倍数 (LCM) となる。
\begin{empheq}{align}
T = \text{lcm}(T_{1}, T_{2}, T_{3}) = \text{lcm} \left( \frac{AB}{\text{gcd}(ab, AB)}, A, B \right) \label{eq:T}
\end{empheq}
時計のイメージに近い。時計の短針の周期は12時間、長針の周期は60分(1時間)、秒針の周期は60秒(1分)であるが、時計が全く同じ姿を見せるのは全ての針が上(12の数字)を指した時で、周期は12時間である。
消費税率10%($\alpha=\tfrac{a}{A}=\tfrac{11}{10}$)、割引率3割($\beta=\tfrac{b}{B}=\tfrac{7}{10}$)の時、$\tfrac{ab}{AB}=\tfrac{77}{100}$ は既約分数なので、周期 $T$ は $A$、$B$、$AB$ の最小公倍数 $\text{lcm}(100, 10, 10)=100$ 円になる。消費税率と割引率を変えて表にすると、次のようになる。
| 消費税率 (%) | 割引率 (%) | $\frac{a}{A}$ | $\frac{b}{B}$ | $\frac{AB}{\text{gcd}(ab, AB)}$ | 周期 $T$ (円) |
|---|---|---|---|---|---|
| 5 | 20 | $\tfrac{21}{20}$ | $\tfrac{4}{5}$ | 25 | 100 |
| 5 | 30 | $\tfrac{21}{20}$ | $\tfrac{7}{10}$ | 200 | 200 |
| 5 | 40 | $\tfrac{21}{20}$ | $\tfrac{3}{5}$ | 100 | 100 |
| 5 | 50 | $\tfrac{21}{20}$ | $\tfrac{1}{2}$ | 40 | 40 |
| 10 | 20 | $\tfrac{11}{10}$ | $\tfrac{4}{5}$ | 25 | 50 |
| 10 | 30 | $\tfrac{11}{10}$ | $\tfrac{7}{10}$ | 100 | 100 |
| 10 | 40 | $\tfrac{11}{10}$ | $\tfrac{3}{5}$ | 50 | 50 |
| 10 | 50 | $\tfrac{11}{10}$ | $\tfrac{1}{2}$ | 20 | 20 |
| 20 | 20 | $\tfrac{6}{5}$ | $\tfrac{4}{5}$ | 25 | 25 |
| 20 | 30 | $\tfrac{6}{5}$ | $\tfrac{7}{10}$ | 25 | 50 |
| 20 | 40 | $\tfrac{6}{5}$ | $\tfrac{3}{5}$ | 25 | 25 |
| 20 | 50 | $\tfrac{6}{5}$ | $\tfrac{1}{2}$ | 5 | 10 |
消費税率と割引率の組み合わせで、いろいろな周期があることが分かる。
私はExcelで税抜価格1円から1万円までについて計算して税込価格の割引と税抜価格の割引のどちらの方が安くなるかを確かめたのだが、これらの周期を見ると1万円まで計算する必要はなかったかもしれない。
さて、店舗などで割引率が示されて割引されている場合、それは税抜価格と税込価格のどちらの価格の割引だろうか?
税抜価格を割引しても税込価格を割引しても損しているわけではないし、その差は1円や2円など少額なので気にする必要はないかもしれない。しかし、単価で1円の差だったとしても、1000個買ったら1000円の差になる。おそらく、売る側は安くなりにくい税込価格を割引しているのだろう。実際、税抜価格の割引だと思って計算したら相手に示された価格の方が高くて税込価格の割引だと分かって損した気持ちになったことがある。興味を持った方は、税抜価格と税込価格のどちらの価格の割引なのかチェックしてみたらどうだろうか。

コメント
表を見ると、周期は全て $A \times B$ になっている。もしかして $T=AB$ なのではないかと考え、#Gemini に確認してもらった。以下は #Gemini の回答。
--
結論から申し上げますと、$\frac{a}{A}$ と $\frac{b}{B}$ が**既約分数**($\text{gcd}(a, A) = 1$ かつ $\text{gcd}(b, B) = 1$)であるという条件の下では、**$T = AB$ は数学的な恒等式となり、$T \neq AB$ となる正の整数の組は存在しません。**
以下にその論理的な証明を記します。
---
### 1. 数式の整理
まず、与えられた $T$ の定義式を簡略化します。
$T = \text{lcm}(T_1, A, B)$ において、$T_1, A, B$ はいずれも $AB$ の約数です。
正の整数の組について、$\text{lcm}(\frac{K}{m}, \frac{K}{n}, \frac{K}{l}) = \frac{K}{\text{gcd}(m, n, l)}$ という性質を利用すると(ここで $K = AB$ とします)、
$$T = \text{lcm} \left( \frac{AB}{\text{gcd}(ab, AB)}, \frac{AB}{B}, \frac{AB}{A} \right)$$
$$T = \frac{AB}{\text{gcd}(\text{gcd}(ab, AB), B, A)}$$
分母の $\text{gcd}(\text{gcd}(ab, AB), B, A)$ は $\text{gcd}(ab, AB, B, A)$ と書き換えられます。
ここで $A$ と $B$ は常に $AB$ を割り切るため、$\text{gcd}(AB, A, B) = \text{gcd}(A, B)$ です。
したがって、$T$ は以下のように非常にシンプルな形になります。
$$T = \frac{AB}{\text{gcd}(ab, A, B)}$$
### 2. 条件による矛盾の証明
$T \neq AB$ となるためには、分母の **$\text{gcd}(ab, A, B) > 1$** である必要があります。
もし $\text{gcd}(ab, A, B) = d > 1$ と仮定すると、ある素数 $p$ が存在して以下が成り立ちます。
1. $p$ は $A$ と $B$ の両方を割り切る($p \mid A$ かつ $p \mid B$)
2. $p$ は $ab$ を割り切る($p \mid ab$)
ここで、$p$ は素数なので、$p \mid ab$ ならば **「$p \mid a$」または「$p \mid b$」** の少なくとも一方が成立します。
* **$p \mid a$ の場合:**
すでに $p \mid A$ であるため、$\text{gcd}(a, A) \geq p > 1$ となります。これは $\frac{a}{A}$ が既約分数であるという条件に矛盾します。
* **$p \mid b$ の場合:**
すでに $p \mid B$ であるため、$\text{gcd}(b, B) \geq p > 1$ となります。これは $\frac{b}{B}$ が既約分数であるという条件に矛盾します。
### 結論
以上のことから、既約分数の条件を満たす限り $\text{gcd}(ab, A, B)$ は必ず $1$ になり、結果として **$T = AB$ が常に成立します。**
--