2012-06-03 2 views
0

Я делаю некоторые вычисления с большими целыми числами в Python, и я получаю некоторые странные результаты.Ошибка деления больших целых чисел в python

>>> 94970389L * 94958913L/775920493L 
11622692L 
>>> 94970389L * 94958913L 
9018284906627157L 
>>> 775920493L * 11622692L 
9018284906627156L 

Почему существует разница между четвертой и шестой строкой? Он должен быть равным.

Я использую Python версии 2.7.3 на Linux PC 32bits

+0

Ошибка округления. Вы можете легко сказать, что результаты должны быть разными, потому что первый набор заканчивается на 9 и 3 соответственно, так что вы знаете, что первый продукт закончится с 7. Меньшезначные цифры второго набора - это 3 и 2, так что вы знаете вторую продукт закончится на 6. Таким образом, вы знаете, что ответы, вероятно, правильные. – Gabe

+2

FYI, вам не нужно набирать Ls. – DSM

ответ

5

Остальная часть вашего разделения составляет 1:

>>> 94970389L * 94958913L % 775920493L 
1L 

Помните, что деление двух целых чисел в Python 2.x является целым числом деление по умолчанию, а остальная часть выбрасывается.

+1

'от __future__ import division' –

Смежные вопросы