What's New In Python 3.7から
、 new があることがわかりますmath.remainder
。それは言う
y に関する x の IEEE 754 スタイルの剰余を返します。有限の x と有限の非ゼロ y の場合、これは差
x - n*y
です。ここで、n は商 の正確な値に最も近い整数x / y
です。x / y
が 2 つの連続する整数のちょうど中間にある場合、最も近い偶数の整数が に使用されn
ます。したがって、剰余r = remainder(x, y)
は常に を満たしabs(r) <= 0.5 * abs(y)
ます。特殊なケースは IEEE 754 に従います。特に、
remainder(x, math.inf)
任意の有限 x の場合は x でありremainder(x, 0)
、非 NaN x の場合はremainder(math.inf, x)
レイズになります。ValueError
剰余演算の結果がゼロの場合、そのゼロは x と同じ符号になります。IEEE 754 バイナリ浮動小数点を使用するプラットフォームでは、この操作の結果は常に正確に表現できます。丸め誤差は発生しません。
%
しかし、私たちはまた、あるシンボルがあることを覚えています
の残り
x / y
また、オペレーターへのメモがあることもわかります。
複素数ではありません。代わりに、必要に
abs()
応じて float に変換してください。
可能な場合でも、Python 3.7 を実行しようとはしていません。
しかし、私は試しました
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> 100 % math.inf
100.0
>>> math.inf % 100
nan
>>> 100 % 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
したがって、違いは、ではなくnan
、ドキュメントに記載されているようになりますZeroDivisionError
。ValueError
%
では、問題はとの違いは何math.remainder
ですか? math.remainder
複素数でも機能しますか(それ%
から欠けています)? 主な利点は何ですか?
これは、公式の CPython github リポジトリからのソースです。math.remainder