Похожие чаты

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


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 ответов

27 просмотров

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
@Benzenoid can you tell me the easiest, and safest way to bu.y HEX now?
Živa Žena
20
This is a question from my wife who make a fortune with memes 😂😂 About the Migration and Tokens: 1. How will the old tokens be migrated to the new $LGCYX network? What is th...
🍿 °anton°
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
What is the Dex situation? Agora team started with the Pnetwork for their dex which helped them both with integration. It’s completed but as you can see from the Pnetwork ann...
Ben
1
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
@lozuk how do I get my phex copies of my ehex from a atomic wallet, to move to my rabby?
Justfrontin 👀
11
Карта сайта