В Python3 .4 Я ожидаю, что операции math.floor() и // приведут к одинаковому результату. Они не.
math.floor()
//
import math n=20844627638611523 print (math.floor(n/2)) print (n//2)
отпечатки:
10422313819305762 10422313819305761
почему?
Проблема в вашем выражении n / 2. Это возвращает число с плавающей точкой 1.0422313819305762e+16 - вы потеряли немного точности в последнем ди git. С этой потерей ваша последующая операция floor возвращает неожиданный результат.
1.0422313819305762e+16
floor