Pythonのround
関数は、四捨五入を行うための関数ですが、一部のケースで予想外の結果を返すことがあります。
例えば、Python 3ではround(2.5)
が2
を返すなど、一般的な四捨五入の結果と異なることがあります。これは、Pythonのround
関数が「銀行家の丸め」を採用しているためです。「銀行家の丸め」は、四捨五入を判定する値が「5」の場合、絶対的に数字を繰上げ処理するのではなく、結果が偶数になる方に丸める、という処理です。
この問題を解決するためには、新たに関数を定義することが推奨されます。例えば、次のようにラムダ式を使用して新たなround
関数を定義することができます。
round = lambda x: int((x*2+1)/2)
この新たに定義したround
関数を使用すると、round(2.5)
は3
を返します。
しかし、注意点として、この新たに定義したround
関数では第二引数を使用することができなくなります。つまり、小数点以下の位を指定して四捨五入することができなくなります。
以上のように、Pythonのround
関数は一見すると単純な四捨五入を行う関数のように見えますが、その内部の挙動は少し複雑です。そのため、round
関数を使用する際には、その挙動を理解した上で適切に使用することが重要です。.