Похожие чаты

Привет ) Вопрос к тем, кто шарит за питон. Эквивалентен ли


int(math.ceil(i/2)) == (i+1)//2
в цикле по натуральным числам?

Насколько я это понимаю (даже учитывая погрешность плавующей точки) при делении нечетных чисел пополам, округление будет идти вверх корректно в любом случае:
math.ceil(0.49…..9) == math.ceil(0.5…..01) == 1

А при делении четных чисел, питон не должен аффектиться погрешностью плавающей точки - условно 4/2, да, вернет float, но никогда не вернет 2.00….1, потому что там негде взяться погрешности -> никогда не округлится вверх -> тоже эквивалентно.

Или?

7 ответов

24 просмотра

1. math.ceil(i/2) округляет результат деления i на 2 вверх до ближайшего целого числа. 2. (i+1)//2 добавляет 1 к i и затем делит на 2, используя целочисленное деление. Если i нечетное, тогда (i+1)//2 просто добавляет 1 перед делением на 2, что эквивалентно округлению вверх. Например, для i = 3, оба выражения дают 2. Если i четное, оба выражения просто делят i на 2. Например, для i = 4, оба выражения дают 2. (c) GPT-4

Последний абзац вскоре всего неправда, можете почитать статью "Floating Point Arithmetic: Issues and Limitations" в доках питона (сообщение со ссылкой почему-то удалилось 🤷) И дело тут не особо в питоне, а в том, как работает IEEE 754

Kostya
Последний абзац вскоре всего неправда, можете почи...

В свое время 754-й п перелопатил вдоль и поперек, но не помню проблем с делением именно на двойку.

Игорь-Белков Автор вопроса
Kostya
Последний абзац вскоре всего неправда, можете почи...

Я +- об этом говорил, сейчас освежил в памяти, спасибо. Мой поинт наверное можно переформулировать как - для деления, когда результат - натуральное число, разве в IEEE 754 не будет возвращаться одно и то же, т.к. дробной части нет и как следствие - нет пространства для ошибки? Просто кажется что питон не должен так себя вести.

Игорь-Белков Автор вопроса
Kostya
Так ее может и нет)) я хз

Тогда ждем дальше 😄😄😄

При делении натуральных чисел на 2 погрешности не будет, будет ровно .5 в случае нечетных, поэтому math.ceil всегда будет округлять корректно. Это естественно если мы говорим за питон 3, потому что во 2-ом было бы по другому, т.к. 9/2 = 4, а 9/2.0 = 4.5

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
any reference of this implementation?
BitBuddha
29
Ⓐrtto, [4/23/24 7:02 PM] Please explain more fully how it is not working exactly, and what are the steps you are taking, and what error messages come or what happens. Ⓐrtto, ...
Ezza Kezza
2
sounds like people have lost their kaspa on tradeogre... does this mean tradeogre not trustworthy?
Ezza Kezza
15
Страшнейшая правда про списки ЦБ. С первых дней жизни P2P сферы, молодые человеки, начитавшись законодательной базы и "внутренних" документов, решили, что им противостоит сер...
Foxcool
3
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
So much speculation in the last week. So much volatility in price. This is because Hedera has a GC that isn't using the network it's governing. Why aren't people asking why a...
Summit Seeker R
9
Anyone else having this error when trying to make transactions?
Datzel
11
Question: How viable is it to use Anvil as the backend infrastructure for managing a TradFi portfolio, while integrating Flexa for instant liquidity and payment solutions? Cou...
Kevin
2
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта