Excelの浮動小数点とINT関数の落とし穴
Copyright © 2026 LWP 山中 一弘
本資料は、出典を明記いただければ、商用・非商用を問わず、ご自由に複製・改変・再配布していただけます。なお、著作権表示は改変せず、そのまま記載してご利用くださいますようお願いいたします。
記事要約
Excelの小数計算では、見た目が7でも内部値が6.999999のようになり、INT関数で期待と違う結果になることがある。
本記事の対象とゴール
浮動小数点誤差とINT関数の組み合わせで起きる落とし穴を理解し、実務上の回避策を持つ。
この記事の対象は、ExcelやVBAを実務で使い、作った表やマクロを後から保守できる形にしたい人です。単なる操作メモではなく、なぜその作り方が必要なのかを説明できる状態を目指します。
先に結論
小数計算をINTに渡す前には、ROUNDで丸める、整数化して計算する、VBAならCurrency型を使うなど、誤差を前提にした処理が必要である。
1. Excelの数値は見た目どおりとは限らない
Excelでは、小数が画面上きれいに見えていても、内部では二進浮動小数点として保持されます。そのため、計算結果が期待よりわずかに小さくなったり大きくなったりすることがあります。
2. INT関数で表面化する
INT は小数点以下を切り捨てます。内部値が 10 に見えても実際には 9.999999999 に近い値なら、結果は 9 になる可能性があります。
この問題は、表示桁数では見えません。計算結果を整数化する前に、丸めの意図を明確にする必要があります。
3. 丸め方を業務ルールとして決める
金額、数量、時間を扱う場合、どの桁で丸めるか、切り上げか切り捨てか四捨五入かを業務ルールとして決めます。関数の都合で決めるのではなく、業務上の意味に合わせます。
見た目と内部値は違う
0.35*20 は見た目には7でも、途中式によっては内部値が7未満になる場合があります。INT は小数点以下を切り捨てるため、6.999999なら6になります。
ROUNDで丸める
実務でよく使う対策は、INTに渡す前に適切な桁でROUNDすることです。丸める桁数は、業務上必要な精度に合わせます。
整数化して計算する
金額や比率のように小数が問題になる場合は、途中計算を100倍、10000倍などの整数で扱い、最後に戻す方法があります。VBAならCurrency型を使う選択肢もあります。
実務で使うときの確認観点
実務でこの考え方を使うときは、まず対象の表が入力用なのか、集計用なのか、帳票用なのかを確認します。同じExcelでも、入力しやすい形、機械が処理しやすい形、人が読む形は違います。これらを同じシートや同じ列に押し込むほど、あとで修正しにくくなります。
次に、作った人だけが意味を知っている状態を避けます。色、罫線、セル位置、暗黙のルールに意味を持たせる場合は、その意味を列名、項目名、コメント、説明シート、またはコード上の名前として残します。Excelは自由度が高いぶん、暗黙知が入り込みやすい道具です。
最後に、更新頻度と利用者を見ます。毎日使う表、複数人が更新する表、年に数回だけ直すマクロでは、設計の優先順位が変わります。速く作ることと、長く使えることのバランスを取る必要があります。
まとめ
Excelの浮動小数点とINT関数の落とし穴 という主題は、単発のExcel操作ではなく、表やマクロをどう設計し、どう保守するかという問題につながります。元記事の投稿群から見えるのは、Excelを便利な道具として使いながらも、データ、書式、UI、処理、学習を混同しないことの大切さです。
出典メモ- 元URL: https://togetter.com/li/1840557
正規URL: https://posfie.com/@hoehoe1234/p/ehDFNyb
元リンクファイル: C:\Users\hoehoe\マイドライブ\LWP記事\03過去記号\エクセル\2022-02-04 EXCEL 浮動小数点とINT関数 - Togetter.URL
取得日: 2026-06-13
投稿本文取得数: 48
素材として使った範囲: 投稿本文、ページタイトル、投稿内で示された式・考え方・操作上の論点
画像確認: HTML内の画像候補は42件確認した。X/Twitter添付画像は動的表示やCDN制約で本文画像として安定取得できないものがあるため、投稿本文で明示された内容を中心に記事へ反映した。
注意: 外部投稿を長文転載せず、記事本文はLWP記事として再構成した。
