
0%がなぜ「1%」より難しいのか——コンピュータにとって「ゼロ」は最も危険な数字だった
消費税の引き下げ議論が盛んになるたびに、こんなニュースが流れてきます。
「1%引き下げの場合、システム改修に半年」
「0%(廃止)の場合、1年以上」
……え、逆じゃない?と思いませんか?
0%って、要は「何もしない」ってことじゃないの?と。
答えは逆で、コンピュータの世界では「ゼロ」は最も扱いが難しい数字のひとつなのです。
今日はその理由を、できるだけ簡単に記事にしてみました。
なぜ1%の対応が半年かかるのか?
そもそも「1%変わるだけで半年もかかるの?」という疑問もありますよね。
レジシステムというのは、思った以上に複雑です。
税率の数字一か所を書き換えればいいわけではなく、
価格表示
領収書
会計ソフトとの連携
軽減税率の区分け
ポイント還元の計算
外税内税の切り替え
……と、税率が絡む箇所が何十か所、何百か所とあります。
それをまずは全部洗い出して、テストして、つながっているところも含めて問題がないか?を確認する。
だから半年ぐらいかかってしまうんですね💦
では0%はなぜさらに倍かかってしまうんでしょうか?
コンピュータにとって「ゼロ」がいかに特別か
理由① ゼロで割ると、コンピュータは壊れる
突然ですが、算数の話をします。
何かをゼロで割ることは、数学的に「できない」のです。
「10÷0は?」と電卓に打ち込むと「エラー」というような表示されます。
これは計算できないからです。

ゼロで割った答えは「無限大」になるからとも言われますが、そもそも「無限大」という数字はコンピュータには存在しません。
レジシステムにはこういう計算があります。
「税込価格から税抜価格を逆算する」
たとえば税率8%なら:税抜価格 = 税込価格 ÷ 1.08
10%なら:税抜価格 = 税込価格 ÷ 1.10
では消費税率が0%になったら?
税抜価格 = 税込価格 ÷ 1.00
……あれ、これは大丈夫に見えますね。1.00で割ればいい。
でもシステムの中身はこうなっていることがあります:
税抜価格 = 税込価格 ÷ (税率 ÷ 100)
税率が10なら ÷ 0.10、税率が8なら ÷ 0.08。これを税率0にすると——
÷ 0.00、つまりゼロ除算が発生します。
コンピュータはこれを処理できず、システムがクラッシュするか、意味不明な数字を返します。
このパターンが、どこかに必ず潜んでいます。
探して、全部直す。
それだけで相当な時間がかかります。
理由② コンピュータはゼロを「偽(ウソ)」と判定する
多くのプログラミング言語では、ゼロは「偽(False)」として扱われます。
日本語で言うと「ゼロ=ない=無効」という解釈です。
現実の生活でも、「何もない」ことをゼロで表現しますよね。
財布に0円=お金がない。
気温0度以下=危険。
0点=答えられなかった。
レジシステムの中には、こういう判定がたくさんあります:
「もし税率があれば、税額を計算する」
税率が10%でも8%でも3%でも「ある(=True)」なので、税額を計算します。
でも税率が0%になると——「ない(=False)」と判定されて、税の計算自体がスキップされてしまうのです。
「税率0%だから税額0円」
と
「税率の設定がないから税額計算をスキップした」
は、結果的に同じ0円になります。
でも意味がまったく違います。
前者は正しい処理で、後者はバグです。
消費税率0%では、この区別を全システムで明確にしなければなりません。
理由③ 30年間「ゼロはありえない」という前提で作られてきた
日本に消費税が導入されたのは1989年。
3%からスタートして、5%、8%、10%と推移してきました。
この35年間、消費税率が0になったことは一度もありません。
これはシステム設計者にとって、無意識の「常識」になっていきます。
「税率は必ずゼロより大きい数が入ってくる」
この前提のもとで作られたコードが、全国のレジシステムに35年分、積み重なっています。
たとえば「税率は1以上でなければエラー」というチェックが入っていたり、「税率フィールドには0を入力できない」というデータベースの制約があったり。
これらは当時の設計者が「おかしな数字が入らないよう保護している」つもりで作ったものです。
でも消費税0%になると、それが全部バグに変わります。
古いシステムほど「ゼロ排除の罠」がたくさん眠っていると想定されます。
ゼロはそもそも「発明された概念」だった
少し歴史の話をすると、ゼロという数字は人類にとって長い間「存在しなかった」ものです。
古代エジプト人もローマ人も、ゼロを数として扱う概念を持っていませんでした。
「何もないものを数える必要はない」という発想です。
ゼロが数として体系的に使われ始めたのは、7世紀のインドが起源とされています。
コンピュータはその2000年の歴史をギュッと圧縮したような存在で、ゼロを「無効」「存在しない」「偽」として扱うクセが根深く残っています。
ゼロは「数字」であると同時に「何かの欠如」を意味するものとして、現代のプログラムにも紛れ込んでいるのです。
さらに言うと、コンピュータ内部でゼロには不思議な二面性があります。
「+0(プラスのゼロ)」と「-0(マイナスのゼロ)」が、数学的には同じなのに、厳密には別の表現として存在することもあります。
また、「0÷0」は「無限大」ですらなく、「数でもない(NaN: Not a Number)」という特殊な状態になります。
ゼロは、数の世界で最も哲学的な存在なのです。
まとめ:「0%」は「税がなくなる」のではなく「全ての前提が変わる」
消費税0%というのは、レジシステムにとって「税率を変える」のではなく、「税というものが存在する世界から、しない世界への移行」を意味します。
ゼロ除算が発生するすべての計算を洗い出す
ゼロを「偽」と判定するすべての条件分岐を修正する
35年間「ゼロはありえない」として作られた無数の前提を撤廃する
これを、何千・何万という処理の中から探して直して、テストして、「壊れていないこと」を証明する。
だから1年かかるのです。
「1%のほうが簡単」というのは、あくまで今の仕組みの延長線上にある話だから。
「0%は別世界への引越し」だから難しい——というのが、エンジニアたちの正直な感覚なのだと思います。
コンピュータの中で、ゼロはいつも特別な扱いを受けています。
「ゼロにするだけでしょ?」と言いたくなっているそこのアナタ。
気持ちは分かります。
でも、35年かけて積み上げてきた「ゼロはありえない」という世界の設計を、全部見つめ直す作業と考えるとどうでしょう。
ちょっと見方が変わったでしょうか?
この記事を読んで「面白かった」と思ったら、スキ・フォローしていただけると励みになります。投資・ビジネス・AIなど、「ちょっとディープだけど分かりやすく」をモットーに発信しています。