読者です 読者をやめる 読者になる 読者になる

牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Pythonの除算「0 == 1/2」 で 「True」って...(´・ω・|||)

Python
python
>>> 1/2
0
>>> 0 == 1/2
True

なんじゃこりゃあぁぁぁ(||゚Д゚)

>>> # 整数の除算は floor (実数の解を越えない最大の整数) を返す:
... 7/3
2
>>> 7/-3
-3

Python チュートリアル「3. 形式ばらない Python の紹介」より

工エエェェ(´д`)ェェエエ工

解決方法?(゚Д゚)

(1) ただし、from __future__ import division として有効化しないと、/ も切り捨て除算を行う。

Python 2.4 クイックリファレンス
>>> from __future__ import division
>>> 1/2
0.5
>>> 1/3
0.33333333333333331

よし(・∀・)b


もうひとつの方法

(コメントいただいたsetomitsさんの情報)

>>> 1 / 2
0
>>> 1.0 * 1 / 2    #始めに1.0かける
0.5
>>> 1 / 2 * 1.0    #最後にかけるとうまくいかない
0.0
>>> a = 1
>>> b = 2
>>> a / b
0
>>> 1.0 * a / b
0.5
>>> c = 3
>>> 1.0 * a / c
0.33333333333333331
>>> 1.0 * b / b    #割り切れても実数になる
1.0

おおぉ、いろいろやり方ありますなぁ(・∀・)b