и посмотреть медиа
Код на салфетке - Python кодинг
и посмотреть медиа
Канал о программировании на Python и других языках. Простые объяснения и коды.
Канал о программировании на Python и других языках. Простые объяснения и коды.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Ресурс для интересующихся программированием. Фокус на Python, но охватывает и другие темы. Простые примеры и разборы.
Знаете ли вы, что float('nan') != float('nan') – True? NaN не равен самому себе – и во всех языках, реализующих IEEE 754, это работает одинаково. В Python, JavaScript, C, Rust, Go – это не особенность реализации, а стандарт. И есть у этого конкретная причина. nan = float('nan') print(nan == nan) # False print(nan != nan) # True print(nan > 0) # False print(nan < 0) # False print(nan == 0) # False NaN не больше нуля, не меньше нуля и не равен нулю. Он не равен ничему – включая себя. Уильям Кахан, архитектор IEEE 754, сделал это намеренно. Логика была такая: NaN – это результат операции без определенного ответа. 0/0, sqrt(-1), inf - inf – это все разные операции, и нет оснований считать, что их результаты совпадают; два неизвестных не обязаны быть равными. Если бы NaN == NaN было True, то пришлось бы признать, что все неопределенности одинаковы, а это математически неверно. У этого решения есть практическое следствие: NaN можно обнаружить через сравнение с самим собой. Именно так и задумывалось – до math.isnan это был идиоматичный способ: import math x = float('nan') print(x != x) # True – работает благодаря тому же свойству print(math.isnan(x)) # True – правильный способ в современном коде А вот list при проверке вхождения сначала сравнивает объекты через is, и только потом через == – поэтому один и тот же nan находит себя в списке, а другой – нет: a = float('nan') b = float('nan') print(a in [a]) # True – тот же объект, is -> True, == не проверяется print(a in [b]) # False – разные объекты, == -> False NaN также портит сортировку: sorted([1, float('nan'), 2]) выполнится без ошибки, результат может зависеть от исходного расположения данных, потому что алгоритм сортировки предполагает транзитивность сравнений, которой у NaN нет. Кахан получил премию Тьюринга в 1989 году – в том числе за IEEE 754. Стандарт вышел в 1985-м и впервые унифицировал floating point на всем железе: до этого каждый производитель реализовывал свой формат, и один и тот же код давал разные результаты на разных машинах. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!