Python で // を使用した整数除算または負の数を使用した floordiv の性質に混乱しています。
>>> -5 // 2
-3
>>> int(-5/2)
-2
floordiv() が -3 に切り捨てられるのはなぜですか? 整数除算は、小数点以下の情報を単純に削除 (または欠落) すると考えられていました。
Python で // を使用した整数除算または負の数を使用した floordiv の性質に混乱しています。
>>> -5 // 2
-3
>>> int(-5/2)
-2
floordiv() が -3 に切り捨てられるのはなぜですか? 整数除算は、小数点以下の情報を単純に削除 (または欠落) すると考えられていました。
算術演算では、floor
関数はオペランド以下の最大の整数として定義されます。-2.5以下の最大の整数は-3であるため、表示される結果は期待される結果です。
これについての考え方では、floordivは常に切り捨てられますが(数直線の左側に向かって)、オペランドの絶対値(2.5)ではなく、オペランドの実際の値(-2.5)に作用します。
ウィキペディアには、床関数と天井関数の詳細があります。
math.trunc()
説明する動作は、Python標準ライブラリの関数によって提供されることに注意してください。
>>> from math import trunc
>>> trunc(-2.5)
-2