Чому 1% 2 дорівнює 1?

Я плутаюся з логікою 1% 2 буде. залишок для цього.

3
додано Автор BrenBarn, джерело
Чи знаєте ви, що повертає оператор модуля?
додано Автор squiguy, джерело
3/2 - 1 залишок 1. 2/2 - 1 залишок 0. 1/2 - 0 залишок 1. 0/2 - залишок 0.
додано Автор Patashu, джерело

7 Відповіді

% returns the remainder of a/b:

>>> 1 % 2
1
>>> 1/2
0
>>> 1 - 0
1

Також вираз по модулю може бути виражений як:

r = a - nq

Де q - floor (a/n) . Тому:

>>> import math
>>> 1 - 2 * math.floor(1/2)
1.0
4
додано
@ErikaSawajiri Haha, ми всі маємо той момент: p
додано Автор TerryA, джерело
Ahh yeah ~ ~ спасибі за те, що терпіння роз'яснюючи це дурне питання ~
додано Автор Erika Sawajiri, джерело

1/2 - 0 з рештою 1. Оператор% повертає цей залишок.

4
додано
@jamylak Примушуючи нас усіх відчувати себе noobs
додано Автор TerryA, джерело
що робить ящірка на цьому сайті
додано Автор jamylak, джерело

% - оператор по модулю. Вона повертає залишок після ділення лівої сторони на праву. Оскільки 2 ділить нуль раз на 1, то залишок є одним.

In general, if a and b are positive integers, and a < b, then a % b == a.

Аргументи не повинні бути цілими числами. Докладніше про це можна дізнатися з довідкової документації python ( http://docs.python.org/2 /reference/expressions.html ):

Оператор% (modulo) дає залишок від поділу першого аргументу на другий. Цифрові аргументи спочатку перетворюються на загальний тип. Нульовий правильний аргумент піднімає виняток ZeroDivisionError. Аргументи можуть бути числами з плаваючою точкою, наприклад, 3,14% 0,7 дорівнює 0,34 (оскільки 3,14 дорівнює 4 * 0,7 + 0,34). абсолютне значення результату суворо менше, ніж абсолютне значення другого операнда [2].

     

Оператори цілочисельного поділу та по модулю з'єднані наступною ідентифікацією: x == (x/y) * y + (x% y). Ціле ділення та модуль також пов'язані з вбудованою функцією divmod (): divmod (x, y) == (x/y, x% y). Ці ідентичності не використовуються для числа з плаваючою точкою; там аналогічні ідентичності тримаються приблизно там, де x/y замінюється на пол (x/y) або поверх (x/y) - 1 [3].

3
додано
"Загалом, якщо a та b є цілими числами, a a ... Немає, якщо a негативне.
додано Автор arshajii, джерело
Хороший улов. Я виправив коментар на загальний випадок, щоб обмежити його позитивними числами - з огляду на простий приклад питання, я хотів надати щось подібне.
додано Автор James, джерело

Звичайно, є залишок. Скільки 2s ви можете вийти з 1? 0 з них, з 1 залишилося.

2
додано

Так, відповідь була опублікована вже 6 разів, лише додавши її для повноти. Якщо є один спосіб зрозуміти по модулю (% ), перетворення з базової 10 на базу 2 поділимо на 2, тому ми залишимо її в спокої (отримаємо залишок 1) . Можна уявити, що двійкові числа в третьому стовпці є результатами операції по модулю.

напр. 9 (основа 10) до (основа 2) ..

2 | 9 | 1  
2 | 4 | 0  
2 | 2 | 0  
2 | 1 | 1 
2
додано

Що робить оператор % :

a % b equals a value c such as 0 <= c < b and there exists a number k so that b * k + c = a.

1
додано

2 * 0 дорівнює 0 отже залишок дорівнює 1

якщо питання - знайти m% n

we find smallest or equal q such that n*(some whole number) = q and q<=m we then find (m-q) which is the remainder..

1
додано
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;