%パーセントラボ

四捨五入・切り捨て・切り上げと 0.1 + 0.2 問題 — 計算機の端数処理のすべて

四捨五入・切り捨て・切り上げの違い、1円単位の端数処理、銀行型丸め、コンピューターで 0.1 + 0.2 が 0.30000000000000004 になる理由と、この計算機の処理方法を解説します。

計算機で試してみる →

パーセント計算は割り算や小数の掛け算が多く、端数がきれいに割り切れないことがほとんどです。同じ計算でも端数をどう処理するかによって数円・数セントが変わるので、ルールを知っておけばレシートや見積書の差を説明できます。

3つの端数処理

単位を変えることもできます。12,345円を10円単位で切り捨てると12,340円、100円単位で四捨五入すると12,300円です。

どこで何を使うか

負の数の端数

−2.5を四捨五入すると−3でしょうか、−2でしょうか? この計算機は0から遠い側へ丸めて−3として処理します。切り捨ては0の方向(−1.239 → −1.23)、切り上げは0から遠い方向です。金額の符号に関係なく、大きさ(絶対値)に同じルールを適用する方式です。

銀行型丸め

ちょうど半分(…5)のときに偶数側へ寄せる方式です(2.5 → 2、3.5 → 4)。丸めを非常に多く繰り返すときに一方へ偏る誤差を減らすため、一部の会計・プログラミング環境で使われます。日常の計算とこの計算機は通常の四捨五入を使います。

コンピューターで 0.1 + 0.2 はなぜ 0.30000000000000004 になるのか

コンピューターは数値を2進数で保存します。10進数の1/3が0.333…で終わらないように、0.1は2進数では無限に続く小数なので正確には保存できず、ごく近い値に丸めて保存されます。そのため、JavaScriptを含むほとんどの言語で0.1 + 0.2を計算すると0.30000000000000004になります。

同じ理由で、1.005を小数第2位に丸めるよくある方法(toFixed(2))は1.01ではなく1.00を返します。1.005が実際には1.00499999…として保存されているからです。

この計算機の処理方法

表示桁数と実際の値

画面上部の小数桁数の設定は、結果を表示する桁数だけを変えます。1 ÷ 3 × 100 は内部的には33.3333333333で、小数2桁にすると33.33と表示されます。コピーボタンは画面に表示された値をコピーします。

まとめ

端数処理のルールが違えば結果が数円変わるのは、エラーではなくルールの違いです。金額が合わないときは、① どの段階で端数を処理したか ② 単位と方式は何か、から確認しましょう。

計算機で試してみる →