私のアプリケーションでは、次のことに遭遇し、その結果に驚きました。
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では、整数除算が必要な場合は、_//
_演算子を使用できます。これにより、Pythonの8/(-7)
と同じ答えが得られます。
これが件名のPython拡張提案です: PEP 238-除算演算子の変更
Pythonは常に、負の数の除算と正の数の除算の両方に対して「床の除算」を行います。
あれは
1/10 = 0
1/-10 = -1
しかし、時々私たちは1/-10を0にする必要があります
最初に浮動小数点除算を使用してから、結果をintにキャストすることで実行できることを理解しています。
int(float(1)/-10) = 0
それは私にとってはうまくいきます。将来のディビジョンをインポートしたり、Python 3にアップグレードしたりする必要はありません。
お役に立てれば幸いです〜
pythonで整数除算を浮動小数点に自動的に変換するには、次のように使用できます。
from __future__ import division
今:
8/-7=-1.1428571428571428
この機能は標準ではありませんpython 2整数除算に依存する既存のコードを壊さないために。ただし、これはpython 3.のデフォルトの動作です。
除算時に両方の値が整数の場合Pythonは床除算を使用します。
Pythonでは、/
演算子は整数除算用です。フロート除算の後にfloor
演算が続くものとして見ることができます。
例えば、
8/7 == floor(8.0/7.0)== 1
8/-7 == floor(8.0/-7.0)== -2