math.floor () и // дают разные результаты - PullRequest
0 голосов
/ 11 апреля 2020

В Python3 .4 Я ожидаю, что операции math.floor() и // приведут к одинаковому результату. Они не.

import math

n=20844627638611523
print (math.floor(n/2))
print (n//2)

отпечатки:

10422313819305762
10422313819305761

почему?

1 Ответ

1 голос
/ 11 апреля 2020

Проблема в вашем выражении n / 2. Это возвращает число с плавающей точкой 1.0422313819305762e+16 - вы потеряли немного точности в последнем ди git. С этой потерей ваша последующая операция floor возвращает неожиданный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...