LINUX.ORG.RU
ФорумTalks

Деление нацело чисел со знаком


0

1

Выручайте, а то запутался. 1/-2, что будет частным , а что остатком от деления? Python говорит что частное и остаток минус 1

★★

Последнее исправление: Chubakur (всего исправлений: 1)

Если есть знакомый 5-класник, лучше у него спроси, а то сейчас некоторые лоровцы начнут через логарифмы и мнимумую единицу доказывать что ты неправ и посоветуют пойти в школу.

ymuv ★★★★
()

Найди определение операции остатка от деления в учебнике по алгебре. Это полезнее, чем реверс-инжиниринг мозгов разработчиков из Гугля.

pacify ★★★★★
()
Ответ на: комментарий от Chubakur

согласно вики остаток не может быть отрицательным

Ну всё, надо репортить баг разраотчикам питона )) Ибо:

clisp -x '(rem 1 -2)' -> 1

Bad_ptr ★★★★★
()

http://ru.wikipedia.org/wiki/Деление_(математика)#.D0.94.D0.B5.D0.BB.D0.B5.D0...

Деление произвольных целых чисел несущественно отличается от деления натуральных чисел — достаточно поделить их модули и учесть правило знаков.

Однако деление целых чисел с остатком определяется неоднозначно. В одном случае, (так же как и без остатка) рассматривают сначала модули и в результате остаток приобретает тот же знак, что делитель или делимое (например, -7 / (-3) = 2 с остатком (-1)); в другом случае понятие остатка напрямую обобщается и ограничения заимствуются из натуральных чисел: -7 \equiv 2 \pmod 3.

Axon ★★★★★
()
Ответ на: комментарий от Chubakur

Проверил на C++, выходит python ошибся

Chubakur ★★
() автор топика
Ответ на: комментарий от Chubakur

определяется неоднозначно

Эта фраза вам что-нибудь говорит?

«Правильного» варианта нет.

buddhist ★★★★★
()

Целая часть в математике всегда меньше либо равна числу, от которого берётся.

Так что [-0.5] == -1
Соответственно, дробная часть, {-0.5} = -0.5 - (-1) = 0.5

KRoN73 ★★★★★
()

даже dc правильно считает. срамота.

nanoolinux ★★★★
()
Ответ на: комментарий от true_admin

«Никогда не исправляйте ошибки в программах. Описывайте ошибку в документации как особенность работы».

Xellos ★★★★★
()

На лекциях по математике в школе нам давали ограничение на величину остатка в пределах от нуля до q-1 включительно, где q — натуральный делитель. Хотя давно это уже было, может быть и ошибаюсь.

luke ★★★★★
()
Ответ на: комментарий от KRoN73

Я бы сказал проще: дробная часть по определению неотрицательна

unanimous ★★★★★
()

Да, остаток всегда положителен, иначе всякие ЦЛП алгоритмы работают некорректно. Хех, у нас на кафедре хотели вместо octave python преподавать.

Зачем нужна эта функция, если она работает некорректно!?

ErasimHolmogorin
()

истинный остаток всегда положительный. чему вас сейчас в школе учат??

drBatty ★★
()
Ответ на: комментарий от ErasimHolmogorin

Зачем нужна эта функция, если она работает некорректно!?

всё корректно работает. Имеется бесконечное счётное множество отрицательных остатков. Тебе выдают один из них. Т.ч. всё верно. Так процессор работает, ибо проще и быстрее. Уже много лет. Всегда можно восстановить остаток, прибавив к нему делитель (конечно частное тоже надо скорректировать).

drBatty ★★
()
Ответ на: комментарий от Chubakur

%D0%9E%D1%81%D1%82%D0%B0%D1%82%D0%BE%D0%BA_%D0%BE%D1%82_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F#.D0.A6.D0.B5.D0.BB.D1.8B.D0.B5_.D1.87.D0.B8.D1.81.D0.BB.D0.B0

about:config
network.standard-url.escape-utf8 = false

bloodredfrog ★★
()
Ответ на: комментарий от Chubakur

В этих учебниках пишут что положительное на отрицательное не делят

угу. Вам надо окончить начальную школу, классе так в пятом вас обучат таким вещам... Ну раньше обучали, как оно сейчас - не знаю, похоже никак. На самом деле восстановление остатка - дополнительная операция, которую по традиции НЕ делают, потому, что это нужно не всегда. Вот создатели пайтона и не стали ломать традиции.

drBatty ★★
()

Правильные варианты

  • остаток 1 частное 0 проверка 0*(-2)+1 ==1
  • остаток -1 частное -1 проверка (-1)*(-2) +(-1) ==1

в завимости от языка тот или иной вариант принимается за основной.

если следовать мнению что остаток [0,a-1] при а>0 и [-a+1,0] при a<0 то ...

в вике вполне исчерпывающе

qulinxao ★★☆
()

если следовать эвристике что остаток всегда меньше делителя то [ в случае неединственности наибольший]

то для случая 1 %/(-2) получим остаток -3 частное -2

проверка (-2)*(-2)+(-3) = 1

Удачи в тролинге

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

т.е придерживатся мнения что остаток(для не кратного числа) должен быть в диапазоне (a-abs(a),a) для кратного 0 - в этом случае область значения может быть разрывна.

qulinxao ★★☆
()
Ответ на: комментарий от ErasimHolmogorin

ожидаемое поведение функции совсем другое?

Не-не-не, на stackoverflow, например, все ожидают что остаток от деления это floor. У каждого своё видение того «как правильно».

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.