倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

ゾロ目の金額

買い物をしてたまに「777円」のようなゾロ目の金額になることがありますが、どんなゾロ目が出やすいか算数を使って見ていきましょう。

消費税5%の場合

消費税が5%のとき、小数点以下切り捨てとしてゾロ目の金額になる価格は以下のようになります:

税込価格 税抜価格
111 106
222 212
333 318
444 423
555 529
666 635
777 740
888 846
999 952

この中で、税込価格が777円になる場合だけが切り捨て無しにこの金額になり、税抜価格が10の倍数です。 これは消費税が5%のとき、税込価格は税抜価格の \( 1.05 = \frac{21}{20} \) 倍になるのと、777が \( 3 \times 7 = 21 \) の倍数であることから分かります:
\begin{align*}
777 \div \frac{21}{20} = 3 \times 7 \times 37 \times \frac{20}{3 \times 7} = 740
\end{align*}
まぁ、別に切り捨てがないことが重要なわけではなくて、税抜価格が10の倍数なのが大事なんだと思いますが。 その意味で、税抜価格が5の倍数である「666円」が次に出やすそうな金額です。

消費税が8%の場合

もうすぐ消費税が8%に上がるので、この場合もやってみましょう:

税込価格 税抜価格
111 103
222 206
333 309
444 412
555 514
666 617
777 720
888 823
999 925

意外にも、消費税が8%でも「777円」の税抜価格が10の倍数で、一番出やすそうなゾロ目なようです*1。 政府は消費税率を変えることによって、買い物時に「777円」になって得られる些細な喜びを奪うのか!と思ったけど*2、それは拙者の誤解だったようでw ちなみに、次に出やすそうなのは税抜価格が5の倍数の「999円」でしょう。

消費税10%の場合

約1年半後に上がる予定の消費税10%でやってみると

税込価格 税抜価格
111 101
222 202
333 303
444 404
555 505
666 606
777 707
888 808
999 909

税抜価格が10の倍数になる額がないので今までほどゾロ目が出ることはなさそう。 5の倍数になる「555円」はあるけど。 ただし、税抜価格が1010円なら、税込価格が「1111円」になりますが。

消費税11%なら

ちなみに、消費税が11%なら

税込価格 税抜価格
111 100
222 200
333 300
444 400
555 500
666 600
777 700
888 800
999 900

となって、ゾロ目出まくるヨ(笑)

Groovy コード
3桁に限ってだけど、税込価格がゾロ目になる場合を出力する Groovy スクリプト

// zorome.groovy
def tax = args[0] as int    // 消費税

def r = 1 + tax/100d

(1..999).each{ i ->
    def price = (int)Math.floor(i * r)    // 切り捨て
    if(price % 111 == 0) println "$price <- $i"
}

実行するには

groovy zorome.groovy 5

などとします(消費税5%なら)。 1つのゾロ目税込金額に1つの税抜価格が対応するなら(実際そうなるようだけど)、1円単位の金額を全部試さなくてもゾロ目の税込価格から逆算することもできますが、まぁ念のため総当たりで。

*1:税込価格の計算に切り捨てはありますが、5%のときに書いたようにこれは重要ではないかと。

*2:いや、思ってないけど(笑)