Разница в делении long int в python 3 [дубликат]
На этот вопрос уже есть ответ здесь:
- Python 3 странное деление 3 ответа
Я столкнулся с причудливой ситуацией, когда делал какое-то большое деление чисел в python.
int(1012337203685477580 / 2) = 506168601842738816
И
int(1012337203685477580 >> 1) = 506168601842738790
Почему существует разница между этими двумя подходами? int () представляется по меньшей мере int64, потому что int(2^63-1) и 2^63 - 1 являются же ценность.1 ответ:
В Python 3,
/
является истинным делением, поэтому вы получите результат с плавающей точкой и все проблемы точности, которые влечет за собой. Вместо этого используйте//
для целочисленного деления:>>> 1012337203685477580 / 2 5.061686018427388e+17 >>> 1012337203685477580 // 2 506168601842738790 >>> 1012337203685477580 >> 1 506168601842738790