私のアプリケーションでは、次のことに遭遇し、その結果に驚いていました。
8/-7=-2
(両方の整数)。
これは何を意味するのでしょうか?
私のアプリケーションでは、次のことに遭遇し、その結果に驚いていました。
8/-7=-2
(両方の整数)。
これは何を意味するのでしょうか?
実際の値、つまり8.0/(-7.0)
、の場合、結果はおおよそ-1.143
です。
整数除算を使用した結果は、より負の値に切り捨てられます-2
。(これは「フロア分割」とも呼ばれます)
これが、次のやや複雑な答えが得られる理由です。
>>> 8/(-7)
-2
>>> 8/7
1
注:これはPython 3で「修正」されており、結果は8/(-7)
になります-1.143
。したがって、Python 2を使用する理由がない場合は、アップグレードする必要があります。;)
Python 3では、整数除算が必要な場合は、//
演算子を使用できます。これにより、Python2の場合と同じ答えが得られます8/(-7)
。
このテーマに関するPython拡張提案は次のとおりです。PEP238-除算演算子の変更
Pythonは常に、負の数の除算と正の数の除算の両方に対して「フロア除算」を実行します。
あれは
1/10 = 0
1/-10 = -1
しかし、いつか1/-10を0にする必要があります
最初にfloat除算を使用してから、結果をintにキャストすることで実行できることがわかります。たとえば、
int(float(1)/-10) = 0
これは私にとっては問題なく機能します。将来の部門をインポートしたり、Python3にアップグレードしたりする必要はありません。
お役に立てば幸いです〜
Pythonで整数除算をfloatに自動的に変換するには、次を使用できます。
from __future__ import division
今:
8/-7=-1.1428571428571428
この機能は、整数除算に依存していた既存のコードを壊さないように、標準のPython2にはありません。
ただし、これはPython3のデフォルトの動作です。
Pythonを分割するときに両方の値が整数の場合、フロア分割を使用します。
Pythonでは、/
演算子は整数除算用です。フロート除算とそれに続くfloor
演算として見ることができます。
例えば、
8/7 ==フロア(8.0 / 7.0)== 1
8 / -7 ==フロア(8.0 / -7.0)== -2