web-dev-qa-db-ja.com

数の除算余りを求める

Pythonで数値の除算剰余を見つける方法を教えてください。

例えば:
数が26で分割数が7の場合、分割剰余は5です。
(7 + 7 + 7 = 21、26-21 = 5のため)

115
Bob

モジュロ演算子を探しています。

a % b

例えば:

26 % 7

もちろん、彼らはあなたにそれを自分で実装してほしかったかもしれません、それもそれほど難しくないでしょう。

157
Uku Loskit

除算の残りの部分は演算子%を使って発見することができます。

>>> 26%7
5

商とモジュロの両方が必要な場合は、組み込みのdivmod関数があります。

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)
172
tzot

26%7(残りがある)

26/7(除数はfloat値になることがあります)

26 // 7(約数のみの整数値になる)

31
Karush Mahajan

モジュロを避けたい場合は、4つの基本操作を組み合わせて使用​​することもできます。

26 - (26 // 7 * 7) = 5
14
alys

Python 3.7から、新しいmath.remainder()関数があります。

from math import remainder
print(remainder(26,7))

ドキュメント を引用する:

数学剰余(x、y)

Yに関するxのIEEE 754形式の余りを返します。有限xおよび有限の非ゼロyの場合、これは差x - n * yです。ここで、nは商x/yの正確な値に最も近い整数です。 x/yが2つの連続する整数のちょうど中間にある場合、最も近い偶数の整数がnに使用されます。したがって、剰余r =剰余(x、y)は常にabs(r)≦0.5 * abs(y)を満たす。

特別な場合はIEEE 754に従います:特に、あらゆる有限のxに対して、residual(x、math.inf)はxであり、あらゆるNaNでないxに対しては、residual(x、0)とresidual(math.inf、x)はValueErrorを上げます。剰余演算の結果がゼロの場合、そのゼロはxと同じ符号になります。

IEEE 754バイナリ浮動小数点を使用するプラットフォームでは、この操作の結果は常に正確に表現可能です。丸め誤差は発生しません。

Issue29962 新しい関数を作成するための論理的根拠について説明します。

10
Chris_Rands

分割するときは、/の代わりに%を使用してください。これはあなたに残りを返します。だからあなたの場合

26 % 7 = 5
4

Moduloが正解ですが、手動でやっているならこれでうまくいくはずです。

num = input("Enter a number: ")
div = input("Enter a divisor: ")

while num >= div:
    num -= div
print num
3
Cooper

これをモジュラス演算子(%)を使って解くことができます。

26%7 = 5;

しかし、26/7 = 3は商になりますが、%演算子は余りになります。

2
KATTAMURU ANIL

1行のコードで商と余りを求めたい場合(より一般的な使用例)は、次のようにします。

quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
1
Alok Nayak

除算問題の残りの部分が必要な場合は、数学の場合と同様に、実際の剰余規則を使用してください。確かにこれはあなたに10進数の出力を与えないでしょう。

valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)

これを計算機形式にしたい場合は、valone = 8valone = int(input("Value One"))に置き換えてください。 valtwo = 3でも同じことをしますが、明らかに違うものがあります。

0
S. Ahmad