Похожие чаты

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


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

13 просмотров

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

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

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

А кто-то пробовал, уезжая из Эстонии получить э-рез и продолжить вести предпринимательскую деятельность внутри Эстонии, используя свой OÜ?
Lalalashechki Lalala
62
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
Чем оно проблема?
Nikita Uzumaki
21
Hi, I was reading this https://twitter.com/HouseofChimera/status/1778078991762780408 about Verasity and their likely choice of Tron as blockchain for their token for its low f...
Jordi
13
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
@samkazemian - couple questions: Update on frxBTC? - This would do well with the current influx of institutional investment entering the space Update on future veFXS streams...
Costi
16
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Does anyone here have a connection Mullvad? it would be nice to know what it would take to have them accept BCH 0-conf.
tl121x
16
I arrived here after a Chico Crypto show highlighted the project & the Team - the fact that the Team had a long history of successfully working with household names gave me e...
Banter is Bullish
5
Карта сайта