AI資格ドリル
資格を選ぶ↓

用語比較

round()と四捨五入の違い|0.5が0になる偶数への丸めとは(Python3基礎)

round() は、学校で習う四捨五入とは違う結果を返すことがあります。二つの候補が同じだけ近いとき、Python の round() は偶数の方へ丸めます。そのため round(0.5) は 1 ではなく 0、round(1.5) は 2 になります。

Python3エンジニア認定基礎試験は、主教材「Pythonチュートリアル 第4版」の基礎文法部分から出題され、数値の演算(第3章)で扱う組み込み関数 round() も範囲に入ります。挙動の詳しい決まりは、Python 公式ドキュメントの組み込み関数の項に書かれています。

このページは、round() の結果が四捨五入と合わずに戸惑った人向けです。ちょうど真ん中の値の扱いと、小数が正確に表せないことによる結果の違いに絞って整理します。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。

結論

round() の丸め方

10 のマイナス ndigits 乗の倍数のうち最も近いものに丸める。二つが同じだけ近いなら偶数を選ぶ方へ丸める。

四捨五入との違い

四捨五入は 0.5 を切り上げる。round() は 0.5 のような真ん中の値を偶数の方へ丸めるので、round(0.5) は 0。

戻り値の型

ndigits を省略すると整数、指定すると number と同じ型。

違いを表で確認

比較軸round() の丸め方四捨五入との違い
ちょうど真ん中の値四捨五入:0.5 は切り上げて 1round():偶数の方へ丸めるので round(0.5) は 0
1.5 の結果四捨五入:2round(1.5):2(偶数の方へ丸めた結果)
戻り値の型round():ndigits 省略または None なら整数round():ndigits を指定すれば number と同じ型
小数の桁指定四捨五入:2.675 を小数第2位で丸めると 2.68round(2.675, 2):2.67(公式ドキュメントの注釈)

Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)

試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

round(0.5) が 0 になって驚いた人

バグではありません。0 と 1 が同じだけ近いので、偶数の 0 が選ばれます。公式ドキュメントも round(0.5) と round(-0.5) は両方とも 0 になると述べています。

02

round(2.675, 2) が 2.68 にならず困った人

公式ドキュメントは、これはバグではないと注釈しています。ほとんどの小数が浮動小数点数で正確に表せないことの結果です。

03

常に切り上げの四捨五入をしたい人

round() は偶数の方へ丸める決まりなので、そのままでは常に切り上げにはなりません。結果を予想するときは、まず round() の決まりのとおりに考えます。

具体例で使い分ける

例 1

ちょうど真ん中の値の例:round(0.5) と round(1.5)(公式ドキュメントの例)

round(0.5)、round(-0.5)、round(1.5) をそれぞれ実行します。

  • ndigits を省略しているので、入力値に最も近い整数が返ります。
  • 0.5 は 0 と 1 から同じだけ近く、-0.5 は 0 と -1 から同じだけ近いので、偶数の 0 が選ばれます。
  • 1.5 は 1 と 2 から同じだけ近いので、偶数の 2 が選ばれます。

結論: 答えは 0、0、2 です。四捨五入なら 1、-1、2 になる場面で、round() の結果は違います。

例 2

小数の桁を指定した例:round(2.675, 2)(公式ドキュメントの注釈)

round(2.675, 2) を実行します。

  • 2.675 は、浮動小数点数では正確に表せない小数です。
  • そのため、予想される 2.68 ではなく 2.67 が返ります。
  • 戻り値は number と同じ型なので、float です。

結論: 答えは 2.67 です。バグではなく、小数を浮動小数点数で表すことの結果です。

問題文から答えを選ぶ手順

  1. 1

    ndigits の有無を確認する

    省略または None なら整数、指定があれば number と同じ型が返ります。

  2. 2

    真ん中の値かを確認する

    二つの候補から同じだけ近い値なら、偶数の方へ丸めます。

  3. 3

    小数の桁指定は表し方も疑う

    2.675 のように浮動小数点数で正確に表せない小数は、見た目どおりに丸まらないことがあります。

試験での見分け方

  • 1round() は最も近い倍数に丸め、同じだけ近いなら偶数の方を選ぶ。
  • 2round(0.5) と round(-0.5) は両方とも 0、round(1.5) は 2。
  • 3ndigits を省略すると戻り値は整数、指定すると number と同じ型。
  • 4round(2.675, 2) は 2.67。小数が浮動小数点数で正確に表せないための結果で、バグではない。

誤答しやすい選択肢

round() は学校の四捨五入と同じだと思う

修正: round() は、二つの候補が同じだけ近いとき偶数の方へ丸めます。round(0.5) は 0 です。

round(2.675, 2) が 2.67 になるのを不具合と考える

修正: 公式ドキュメントは、これはバグではなく、小数が浮動小数点数で正確に表せないことの結果だと説明しています。

ndigits を指定しても整数が返ると思う

修正: ndigits を指定すると、戻り値は number と同じ型です。整数が返るのは ndigits を省略するか None のときです。

確認問題

Q1round(1.5) の結果は何ですか?

答え: 2

1 と 2 が同じだけ近いので、偶数の 2 に丸められます。公式ドキュメントの例と同じです。

Q2round(0.5) の結果は何ですか?

答え: 0

0 と 1 が同じだけ近いので、偶数の 0 に丸められます。公式ドキュメントの例と同じです。

Q3round(2.675, 2) の結果は 2.68 と 2.67 のどちらですか?

答え: 2.67

小数が浮動小数点数で正確に表せないための結果で、バグではないと公式ドキュメントが注釈しています。

到達チェック

  • 同じだけ近い値は偶数の方へ丸められると説明できる
  • round(0.5)・round(-0.5)・round(1.5) の結果を言える
  • ndigits を省略したときの戻り値が整数だと言える
  • round(2.675, 2) が 2.67 になる理由を説明できる

同じ資格で次に知りたいこと

よくある質問

Qround() は四捨五入ですか?

A

同じではありません。二つの候補が同じだけ近いとき、round() は偶数の方へ丸めます。そのため round(0.5) は 0、round(1.5) は 2 です。

Qround(2.675, 2) が 2.68 にならないのはなぜですか?

A

ほとんどの小数が浮動小数点数で正確に表せないためで、バグではないと公式ドキュメントに書かれています。

Qround() の戻り値は整数ですか?

A

ndigits を省略するか None にすると整数です。ndigits を指定すると number と同じ型です。

次に見る比較

執筆: ミナト編集部(運営者情報を見る)