Почему 600851475143% 3 == 2L, а не 0?Объяснение результата модели long
Для небольших целых чисел мода работает правильно, однако это не так долго. Как заставить mod работать с целыми числами?
Почему 600851475143% 3 == 2L, а не 0?Объяснение результата модели long
Для небольших целых чисел мода работает правильно, однако это не так долго. Как заставить mod работать с целыми числами?
Он работает правильно. Он не должен быть равен нулю.
Оператор %
(modulo) возвращает остаток от деления первого аргумента на второй.
600851475143 % 3 = 2
Потому что:
600851475143/3 = 200283825047.67
Он по-прежнему отлично работает на больших количествах, например.
600851475144 % 3 = 0
Вот docs
oh ... когда я забегаю 600851475143/3, я получаю 200283825047. И вот почему я думал, что это не сработает. Если я скажу float (600851475143/3), я получаю научную нотацию, и я все еще не вижу, есть ли остаток: 2.00283825047e + 11 –
a = float (600851475143/3), даже когда я назначаю переменную в результат. В проводнике переменных он выглядит как если бы не осталось: 200283825047.0 –
Это потому, что разделение между двумя ints в python 2 является целым делением. Хотите проверить? Попробуйте '1/2' Вы получите' 0', а не '0,5' – NightShadeQueen
Почему это '0'? – user3636636
Я предполагаю, что OP видит 3 в конце ... –