数値の丸め
入力
| 数値 | 3.14159 |
|---|---|
| 小数点以下の桁数 | 2 |
| 丸め方式 | 四捨五入(0.5を切り上げ) |
数値の丸め
四捨五入・銀行家の丸め・切り捨て・切り上げ・0方向への切り捨ての5方式で、数値を任意の桁数に丸めます。
入力
結果
値を入力すると計算結果が表示されます。
他の丸め方式との比較
数値の丸めとは、ある数を指定した精度の近似値に置き換える操作です。結果は「何桁まで残すか」と「端数がちょうど半分のときにどちら側へ丸めるか」の2点によって決まります。
5種類の丸め方式
四捨五入
端数が0.5のとき、+∞ 方向(正の無限大の方向)へ丸める方式です。日本の学校教育で広く教えられる基本的な方式で、5以上を切り上げるというルールに相当します。
- 2.5 → 3
- −2.5 → −2(+∞ 方向であり、絶対値が小さくなる)
銀行家の丸め(偶数丸め)
端数がちょうど0.5のとき、一の位が偶数になる側へ丸める方式です。偶数丸めとも呼ばれます。
- 2.5 → 2(2は偶数)
- 3.5 → 4(4は偶数)
- 4.5 → 4(4は偶数)
- 5.5 → 6(6は偶数)
IEEE 754浮動小数点演算の標準であり、Python 3のround()関数やJavaのRoundingMode.HALF_EVENで既定の動作として採用されています。大規模なデータセットで0.5の端数を繰り返し丸めるとき、四捨五入の系統的な偏り(常に切り上げ方向にずれる傾向)を打ち消せる点が利点です。
切り捨て(床関数)
小数部の値に関わらず、常に −∞ 方向(負の無限大の方向)へ丸めます。
- 2.9 → 2
- −2.1 → −3
切り上げ(天井関数)
小数部の値に関わらず、常に +∞ 方向(正の無限大の方向)へ丸めます。
- 2.1 → 3
- −2.9 → −2
0方向への切り捨て
小数部を取り除き、常に0の方向へ丸めます。正の数では床関数と同じ結果になりますが、負の数で違いが現れます。
- 2.9 → 2(床関数と同じ)
- −2.9 → −2(床関数の −3 とは異なる)
計算式
数値 x を小数点以下 d 桁に丸めるには、次の手順で計算します。
- スケールの計算: s = 10^d
- スケール変換: x × s
- 丸め操作: 選択した方式で整数 n を求める
- スケール戻し: n / s
d = 2、x = 3.14159 の場合:
- s = 100
- x × s = 314.159
- 四捨五入 → 314
- 314 / 100 = 3.14
負の桁数指定
小数点以下の桁数に負の整数を指定すると、丸め位置が小数点より左に移ります。
| 指定桁数 | 丸める位 |
|---|---|
| −1 | 10の位(十の位) |
| −2 | 100の位(百の位) |
| −3 | 1,000の位(千の位) |
例: 3,749 を百の位で丸める場合(桁数 = −2)
- s = 10^(−2) = 0.01
- 3,749 × 0.01 = 37.49
- round(37.49) = 37
- 37 / 0.01 = 3,700
消費税の計算や会計処理で切り捨て・切り上げが要求される場面でも、この方式を利用できます。
床関数と0方向への切り捨ての違い
正の数では結果が一致するため、違いが現れるのは負の数のみです。
| 入力値 | 切り捨て(床関数) | 0方向への切り捨て |
|---|---|---|
| 2.7 | 2 | 2 |
| −2.7 | −3 | −2 |
| −0.1 | −1 | 0 |
床関数は常に −∞ 方向へ進むため、負の数では絶対値が大きくなります。0方向への切り捨ては常に0に近い値を返します。
浮動小数点数の精度について
10進小数のほとんどは、IEEE 754 の2進浮動小数点では厳密に表現できません。たとえば3.55 × 10 は内部的に約35.499999999999996として保持されます。このため、銀行家の丸めの「ちょうど0.5かどうか」という判定は、スケール後の値が2進数の半整数に一致するときだけ機能します。3.45や6.55のような「見た目は切りの良い小数」であっても2進表現では厳密な0.5でないことが多く、その場合は全方式で同じ結果になります。この挙動はPythonやJavaScriptと同一であり、計算の誤りではありません。
計算例:2.5 を各方式で丸めた場合
| 方式 | 結果 |
|---|---|
| 四捨五入 | 3 |
| 銀行家の丸め | 2 |
| 切り捨て(床) | 2 |
| 切り上げ(天井) | 3 |
| 0方向への切り捨て | 2 |
1つの入力値でも方式によって異なる結果が得られます。どの方式を選ぶかは、業務規則や数値計算の目的に応じて決定します。
よくある質問 (FAQ)
銀行家の丸めとはどのような計算方法ですか?
銀行家の丸め(偶数丸め・round-half-to-even)は、端数がちょうど0.5のときに偶数側へ丸める方式です。たとえば2.5は2(偶数)に、3.5は4(偶数)に丸められます。この方式はIEEE 754浮動小数点演算の標準であり、多くの金融システムでも採用されています。大量データを集計する際に、通常の四捨五入(0.5を常に切り上げ)が生む系統的な偏りを打ち消せる点が利点です。
100の位に丸めるにはどう設定すればよいですか?
小数点以下の桁数を −2 に設定します。負の値を指定すると丸め位置が小数点より左へ移ります。−1 で10の位、−2 で100の位、−3 で1,000の位への丸めになります。たとえば3,749を桁数 −2 で四捨五入すると、3,749は3,700に近いため3,700になります。
切り捨て(床)と0方向への切り捨ての違いは何ですか?
正の数では結果は同じです(例:floor(2.9) = trunc(2.9) = 2)。負の数で違いが現れます。切り捨て(床)は常に −∞ 方向に進むため、floor(−2.9) = −3 になります。0方向への切り捨ては常に0方向に進むため、trunc(−2.9) = −2 になります。つまり床の方が絶対値が大きくなり、0方向への切り捨ての方が0に近い値になります。
0.5が切り捨てられるのはなぜですか?
四捨五入では0.5は常に +∞ 方向へ丸まるため、0.5 → 1、−0.5 → 0 となります。銀行家の丸めでは0.5は偶数側へ丸まるため、0.5 → 0(0は偶数)、1.5 → 2、2.5 → 2、3.5 → 4 となります。学校で学ぶ「0.5は切り上げ」の規則に慣れていると奇妙に見えますが、銀行家の丸めはIEEE 754の既定方式であり、表計算ソフトやプログラミング言語の多くで使われています。