解決策が必要な場合は、数値を切り捨てることを忘れないでくださいint
。整数除算を行う代わりに、floatを次のように切り捨ててください。int
int(1./-2)
Python 3.Xを使用している場合は、次のことができます。
int(1/2)
将来からPy2.Xインポート部門で同じ動作が必要な場合
from __future__ import division
int(1/2)
この動作の正確な理由を知りたい場合は、このすばらしい記事「Pythonの整数除法の原理」を読んでください。
除算にfloatを使用する際の苦境を見て、これは私がテストした限りでは機能しているように見える代替アプローチです。あなたが直面している問題を私に知らせてください
>>> def trunc_div(a,b):
q, r = divmod(a,b)
if q < 0 and r:
q += 1
return q
>>> trunc_div(1,-2)
0
>>> trunc_div(999999999999999999999999999999999999999999, -2)
-499999999999999999999999999999999999999999L
>>> trunc_div(999999999999999999999999999999999999999999, 2)
499999999999999999999999999999999999999999L
>>> trunc_div(1,2)
0
>>>