私はちょうど再読み込みされた新機能ではPython 3.0を、それが述べて:
round()関数の丸め方法と戻り値の型が変更されました。正確な中間ケースは、ゼロからではなく、最も近い偶数の結果に丸められるようになりました。(たとえば、round(2.5)は3ではなく2を返すようになりました。)
ラウンドのドキュメント:
round()をサポートする組み込み型の場合、値は10の累乗からnを引いた最も近い倍数に丸められます。2つの倍数が等しく近い場合、丸めは偶数の選択に向かって行われます
したがって、v2.7.3の下では:
In [85]: round(2.5)
Out[85]: 3.0
In [86]: round(3.5)
Out[86]: 4.0
私が期待したように。ただし、現在はv3.2.3の下にあります。
In [32]: round(2.5)
Out[32]: 2
In [33]: round(3.5)
Out[33]: 4
これは直感に反し、丸めについて理解している(そして人々をつまずかせるのは当然)ことに反しています。英語は私の母国語ではありませんが、これを読むまで、丸めが何を意味するのかはわかっていたと思いました:-/ v3が導入された時点では、これについてある程度の議論があったに違いありませんが、理由はわかりませんでした。私の検索。
- これがこれに変更された理由について誰かが洞察を持っていますか?
- この種の(一貫性のない)丸めを行う他の主流のプログラミング言語(C、C ++、Java、Perlなど)はありますか?
ここで何が欠けていますか?
更新:@ Li-aungYipの「バンカーの丸め」に関するコメントで、検索する適切な検索用語/キーワードが与えられ、このSOの質問が見つかりました。なぜ.NETはデフォルトで銀行の丸めを使用するのですか?なので、注意深く読んでいきます。