2.5 // 2.0
の背後にある理論的根拠は、int
ではなくfloat
を返します。 整数値の場合は、int
オブジェクトに入力してください。2.5/2.0の背後にある根拠は何ですか?Python 3.xではintではなくfloatを返しますか?
[編集]
私はこれがそうであるという事実の正当性を探しています。このようにするための議論は何でしたか?まだそれらを見つけることができませんでした。用語 "床部門は" 示唆より
[EDIT2]
floor
との関係は、より多くの問題があります!
3.5 // 5.5 == 0.0
に対し
floor(3.5/5.5) == 0
(int型)
(フロート)
はまだここに任意のロジックを識別することはできません:(
を[EDIT3]
PEP238から:
ユニファイドモデルでは、整数1は、浮動小数点数1.0(その不正確さを除いて)と区別できず、両方とも はすべての数値コンテキストで同じように動作する必要があります。
Numpyのような重要ではないライブラリは、浮動小数点数をインデックスとして提供するときに、たとえ整数であっても不平を言っています。だから、「区別がつかない」というのは現実ではない。これに関連してバグを狩るのに少し時間を費やしました。 //
の本当の性質について学ぶことは非常に驚きでした。そして、それはドキュメントからは明らかではありませんでした(私のために)。
私はPython 3.xの設計をかなり信頼しているので、このように定義するのは非常に明白な理由がないと思いました。しかし、今私は不思議です...
それはフロートを返します数字は浮動小数点数です。整数の末尾に ".0"を追加すると、Pythonで浮動小数点に変換されます。 –
@ SparklePonyはルールかもしれませんが、ルールは理由ではありません。これは面白い質問だと思います。 –
@ SparklePony:引数の両方が浮動小数点であることは明らかです。これは出力が浮動小数点でなければならないわけではありません。我々はすでにフロートを返す1/2を持っています。なぜ1.0/2.0ではintを返さないのでしょうか? – user2357112