四捨五入計算
計算結果
丸めた値
- 切り捨てた値(同じ位)
- 1234
四捨五入とは、ある数を、書きやすい近くの数に置き換えることです。この操作には2つの判断があり、ふだんは意識されないまま行われています。1つ目は、丸める位をどこにするかです。一の位、十の位、小数第2位、あるいは指定した桁数の有効数字へ、という選び方があります。2つ目は、値がちょうど真ん中に乗ったときにどうするかで、ここで2つのまともな流儀が食い違います。半分を0から遠い側へ動かすやり方では、2.5は3に、−2.5は−3になります。学校で教えられているもので、ふつう四捨五入と言えばこれを指します。切り捨ては値を0の側へ動かすので、2.5は2、−2.5は−2になります。定義はこちらのほうが簡単で、多くのソフトウェアが実際にこれをやっています。このページは位を入力として受け取り、同じ位での2つの結果を並べて出すので、違いは前提にされず、目に見えます。位の指定には2通りの名指し方があります。小数の位で名指しするのが直接的なやり方で、一の位、十の位、百の位、小数第3位まで、上下どちらにも3桁ぶんあります。有効数字で名指しするのは科学で使われるやり方で、小数点からではなく最初の0でない桁から数え始めます。なので1,567を有効数字2桁にすると1,600になり、これは百の位への丸めと同じ答えですが、たどり着き方が違います。ある大きさの数では2つの名指し方が一致することが多く、1234.5678では有効数字の6つの選択肢が小数の6つと同じ位に落ちます。末尾のゼロはそのまま残します。情報を運んでいるからです。1234.6という書き方と、小数第2位までの1234.57という書き方は、その数がどれだけ正確に分かっているかについて別の主張をしており、ゼロを落とすとその違いが消えます。2つ目の出力は同じ位で切り捨てた値で、あなたの数で半分の規則が何をしているかを見るいちばん安い方法です。ここに無いものも書いておきます。このページが丸めるのは1回に1つの数で、計算全体に有効数字を引き継ぐことはしません。そこでは答えの精度がいちばん粗い入力で決まり、末尾のゼロは値としてではなく桁として生き残る必要があります。
1234.5678を7つの位それぞれで丸めた値と切り捨てた値
| 丸める位 | 丸めた値 | 切り捨てた値 |
|---|---|---|
| 1000 | 1000 | 1000 |
| 100 | 1200 | 1200 |
| 10 | 1230 | 1230 |
| 1 | 1235 | 1234 |
| 0.1 | 1234.6 | 1234.5 |
| 0.01 | 1234.57 | 1234.56 |
| 0.001 | 1234.568 | 1234.567 |
最初の3行は何とも食い違いません。大きな位へ丸めると小数部がまるごと捨てられ、2つの流儀はどちらも同じ数に着地するからです。千の位、百の位、十の位では、1234.5678はどちらでも1000、1200、1230になります。食い違いは一の位から始まり、半分を0から遠い側へ動かすやり方で1235、切り捨てで1234になります。その下のどの行でも同じ理由で食い違いが見えます。小数第1位の5が一の位では本物のちょうど真ん中の場合であり、小数部(.5678)のほうが後の行をちょうど真ん中から外しているからです。答えの小数の桁数は行が決めることにも注意してください。千の位には小数がなく、小数第3位は3桁を保つので、末尾のゼロが現れて残ります。最後の6つの選択肢である有効数字は、その位が数の大きさで決まるためこの表にありません。1234.5678では上の6行と同じ6つの位にたまたま落ちるので、有効数字1桁から6桁はここに示したのと同じ数の組になります。表は1234.5678に固定されており、それは既定の値でもあるので、開いた時点で画面に出ている答えを説明します。あなたの入力には追随しません。
公式
一の位へ:1234.5678 ⇒ 四捨五入で1,235、切り捨てた値は1,234、2.5 ⇒ 3または2、有効数字2桁へ:1,567 ⇒ 1,600
- 1234.5678
- 丸める値で、−1000000000から1000000000までの任意の数、小数も含みます。下の参考表もこの数から作られているので、表の7行は、いま画面に出ている値の7通りの位ということになります。
- p0・pm2・s2
- どこへ丸めるかの指定で、1つの一覧から13の選択肢を選びます。pの選択肢は小数の位を名指しします。p3は千の位、p0は一の位、pm2は小数第2位です。sの選択肢は有効数字の桁数で、s1からs6まで、最初の0でない桁から数えます。
- 0から遠い側へ
- ちょうど真ん中に乗った場合の規則で、2つの候補のちょうど間にある値は0から遠い側へ動きます。2.5は3に、−2.5は−3になります。学校で教えられている流儀です。同じく、小数第1位が5の値が長く続くのを足し上げたときに不具合のように見えるものでもあります。どれも同じ向きへ押されるからです。
- 切り捨てた値
- 2つ目の出力で、半分の問いのもう半分です。同じ値と同じ位で、余分な桁を丸めずに捨てるので、必ず0の側へ動きます。2.5の切り捨てた値は2、−2.5なら−2です。丸めた値の隣にこれを出すことで流儀が見えるようになります。ほとんどの入力では2つの出力が一致するからです。
- 1,567 → 1,600
- 有効数字が実際に働いている例です。数え始めるのは最初の0でない桁なので、1,567を有効数字2桁にすると1と5を残して残りを丸め、1,600になります。末尾のゼロは残ります。この答えは有効数字2桁だと主張しており、1,600を1,600と書くことが、その主張を読者に見せる唯一の方法だからです。
- 1.005 → 1.01
- 計算を浮動小数点の掛け算と割り算ではなく、小数の桁の上で行っている理由です。1.005は1.005よりわずかに小さい値として格納されるので、ふつうの倍精度のやり方では1.00に切り下がります。桁の上で作業すれば、人が期待する1.01になります。下の算例がこの場合を固定しています。
測定値を報告するのが典型例で、有効数字はそこから来ています。ものさしで1ミリまで読んだ長さを小数第6位まで報告するべきではありません。余分な桁は、その計器が決して持っていなかった精度を主張してしまうからです。有効数字はその主張を正直に保つ表記で、測定値を丸めることがパズルの数を丸めることと同じでない理由でもあります。お金は小数の位の日常版です。価格は小数第2位まで丸められ、半分の規則は本物の政策問題になります。セントの端数がどちらへ行くかを決めるからで、取引が何千と積み重なると、いつも同じ向きへ押す規則は目に見えるずれを生みます。統計と報告は読みやすさのために丸めて概数にします。割合は小数第1位まで、人口は千の位まで、平均は入力と同じ精度まで、という具合です。切り捨てにも用途があり、ここで省かずに出しているのはそのためです。0の側へ床や天井を取るのは多くのプログラミング言語が既定でやっていることで、値が固定精度の形式に格納されるときに現れるものでもあります。どの場面でも覚えておくべき規則は、2回丸めるのは1回丸めるのと同じではない、ということと、丸めた数はもとの数の短い書き方ではなく精度についての主張だ、ということです。丸めた値の上で計算すると差が積み重なるので、その問題を有効数字で扱うのはこのページではなく別の道具になります。
計算例
1234.5678、一の位へ
- 1234.5678の両側の候補は1,234と1,235です
- 決めるのは小数第1位の5です
- 半分を0から遠い側へ動かす規則では、5は0から遠ざかる理由になるので、値は1,235に丸まります
- そのあとに続く小数部(.5678)はこれを変えません。決めるのは丸める位にある桁で、そのあとの桁は同点を破るだけです
- 切り捨ては小数部を捨てるので、1,234になります
既定であり、下の参考表が作られているもとの数でもあります。仕事をしているのは小数第1位の5だけです。そのあとの6も7も8も関係なく、1234.5001という値でもまったく同じように丸まります。ここでは2つの出力が食い違っており、それが都合のよい場合です。ほとんどの入力では半分を0から遠い側へ動かすやり方と切り捨ては一致し、2つの数が食い違うときだけが、半分の規則が効いたしるしになります。
ちょうど真ん中の場合:2.5を一の位へ
- 2.5は2と3のちょうど真ん中に位置します
- 半分を0から遠い側へ動かすので、丸めた値は3です
- 切り捨ては0の側へ動くので、切り捨てた値は2です
- どちらも間違いではなく、同じ入力に対する2つの流儀です
食い違いが見えるいちばん小さな例で、覚えておく価値のあるものです。半分を0から遠い側へ動かすやり方だけが使われているわけではありません。銀行方式の丸めなら2.5は偶数の隣である2に行きます。測定値の長い一覧ではこれが効いてきます。半分をいつも同じ向きへ丸めると、小さな上向きの偏りが入るからです。このページは学校の流儀である半分を0から遠い側へを使い、発見に任せず、そう明記しています。
負のちょうど真ん中の値:−2.5を一の位へ
- −2.5は−3と−2のちょうど真ん中に位置します
- 0から遠い側へ動くので、負の側では0から遠ざかることが下向きを意味し、答えは−3です
- 切り捨ては0の側へ動き、−2になります
- 符号を扱っているのは数直線に沿った向きではなく、0からの距離です
半分を0から遠い側へ動かすやり方と、条件を付けずに「いつも上へ丸める」と言うやり方を分ける例です。ここではどちらの値も同じ規則で、0から遠ざかるように動いていますが、数直線上では逆向きに動きます。0が真ん中にあるからです。条件を付けずに「上へ丸める」と説明されたコードや規則が曖昧なのは、まさにこの理由です。参考表の負の行でも、ほかの位で同じことが起きています。
1.005を小数第2位へ
- 候補は1.00と1.01です
- 決めるのは小数第3位の5で、これはちょうど真ん中の場合です
- 半分を0から遠い側へ動かすので、値は1.01に丸まります
- 切り捨ては5を捨てて1.00を保ちます。末尾のゼロは精度が見えるように残します
実装を正当化する例です。100を掛けて丸めて100で割るという当たり前のやり方は1.00を返します。1.005は正確に格納できず、格納される値が1.005よりほんのわずか小さいからです。人が期待する答えは1.01で、小数の桁の上で作業するとそれが得られます。同じことは日常的な多くの値で起きるので、最後の位が1つずれた結果は、規則の誤りではなくたいていこれです。
1,567を有効数字2桁へ
- 最初の有効数字は千の位の1で、2つ目は5です
- 有効数字2桁とはこの2つの桁を残し、百の位で丸めることです
- そのあとの桁が6なので5が切り上がり、値は1,600になります
- 末尾のゼロは残ります。有効数字2桁を保ったことを記録しているのがそれだからです
- 同じ位で切り捨てると1,500になります
百の位への丸めと同じ答えに、反対の端からたどり着いたものです。出力から分からないことも書いておきます。1,600をただの数として書いたものは、一の位へ丸めた1,600や、たまたまちょうど1,600だった測定値と区別がつきません。ゼロを残すのがこの表記にできる精一杯で、有効数字を計算全体に引き継ぐこと、つまり桁数が掛け算と割り算を生き延びなければならない場面は、1つの値を丸めることとは別の問題です。
適用限界
値は−1000000000から1000000000までの小数を含む数でなければならず、位は打ち込むのではなく13の選択肢から選ぶので、その一覧の外の位を頼む方法はありません。丸めは浮動小数点で拡大縮小するのではなく、書かれたとおりの小数の桁の上で行うので、結果は桁が言うとおりになります。1.005を小数第2位へ丸めた答えはここでは1.01で、よくある掛けて割るやり方だと1.00になります。同じ選択には目に見える結果がもう1つあります。結果は必ず小数点付きで印字され、千位の区切りは決して付きません。なので小数点としてコンマを打った読者は、答えの中に点を見ることになります。これは意図的で、文字の結果を出すほかのページと同じです。末尾のゼロは残します。答えが主張している精度を記録しているからで、1234.6と1234.60は別の位からの別の出力であり、同じようには書かれません。負の値は0からの距離で丸めるので、ちょうど真ん中の負の値は数直線上を上ではなく下へ動きます。下の参考表は1234.5678に固定されていて、あなたの入力には追随しません。1つの数に最初の7つの選択肢を当てたもので、有効数字の6つの選択肢は行を持たず、表の注で説明しています。ここには走っている合計を丸める仕組みはなく、何も積み上がりません。このページは1回の計算につき1つの値を丸めます。
よくある質問
- 半分を0から遠い側へ動かすとはどういう意味ですか
- 2つの候補のちょうど真ん中にある値が0から遠い側へ動くという意味です。2.5は3に、−2.5は−3になります。学校が教えている流儀で、このページが使っているものでもあります。使われているのはこれだけではありません。銀行方式の丸めは半分を偶数の隣へ送るので、半分をいつも同じ向きへ丸めることで長い一覧に生じる小さな上向きの偏りを避けられます。
- 小数の位と有効数字は何が違うのですか
- 小数の位は小数点から数え、有効数字は最初の0でない桁から数えます。1,567を有効数字2桁にすると1,600になり、百の位への丸めと同じです。一方、1,567を小数第2位までにすると1,567.00です。有効数字は測定値に使う表記で、同じ量を別の単位で書いても桁数が変わらないからです。
- 1.005はなぜ1.00ではなく1.01になるのですか
- 値がちょうど真ん中にあり、このページが浮動小数点で拡大縮小するのではなく小数の桁の上で作業して、半分を0から遠い側へ丸めるからです。よくある100を掛けて丸めて100で割るやり方は1.00を返します。1.005は1.005よりわずかに小さい値として格納されるからです。桁に基づく答えは1.01で、それは規則が言っていることであり、人がその数を書き写すときに出す答えでもあります。
- 切り捨てとは何で、なぜ出しているのですか
- 切り捨ては余分な桁を丸めずに捨てるので、値は必ず0の側へ動きます。2.5は2に、−2.5は−2になります。同じ位の丸めた値の隣に出しているのは、この組が、半分の規則が効いたかどうかを見るいちばん明快な方法だからです。ちょうど真ん中から離れた入力では2つの出力が一致し、食い違うところでは流儀のほうが違いを生んでいます。
- 末尾のゼロは有効なのですか
- はい、意図的に残しています。小数第1位までの1234.6と、小数第2位までの1234.57は、その値がどれだけ正確に分かっているかについての別々の主張で、末尾のゼロを落とすとその違いが消えます。有効数字へ丸めた整数でも同じです。1,600がゼロを保つのは、有効数字2桁を保ったことを記録しているのがそれだからです。
- このページは計算全体に有効数字を引き継ぎますか
- いいえ。1回に1つの値を丸めるだけで、計算の連なりに精度を引き継ぐことはしません。そこでは結果がいちばん粗い入力で制限され、途中の値は最後まで丸めずに保たなければなりません。それは1つの数を丸めることとは別の問題です。有効数字の桁数が掛け算と割り算を生き延びる必要があり、ただ丸めた値ではそれを表せないからです。
参考文献
- Rounding — 定義、半分を0から遠い側へ丸める規則と偶数へ丸める規則を含む半分の流儀、およびその選択が積み上がった結果に与える影響 — Wolfram MathWorld (United States)
- Significant digits — 桁数が最初の0でない桁から始まることと、末尾のゼロが値ではなく精度を記録する理由 — Wolfram MathWorld (United States)
- Nearest integer function — 一の位への丸めという特別な場合と、そのために定義された同点の扱い — Wolfram MathWorld (United States)
- 学習指導要領(平成29・30・31年改訂) — 小学校の「数と計算」領域で扱う小数の意味と求近似数、および四捨五入の根拠になる文部科学省の告示・解説 — 文部科学省