Было странно среди "популярных ошибок" не увидеть расстановку скобочек. Ну и вообще - усердное применение успешно усвоенных в курсе средней школы правил элементарной алгебры для всяческого "упрощения". Власти скрывают! Не знаю, стало ли понятно слушателям, что вообще-то одному и тому же float могут соответствовать несколько десятичных литералов (так что точное значение можно задавать только float.fromhex). Эти моменты (в т.ч. поведение repr) хорошо изложены в Tutorial (15. Floating-Point Arithmetic).
43 минуты пролетели незаметно, думал выпуск как обычно на 20+ минут) Криптобиржи часто(всегда?) используют для чисел два поля: число как int и экспоненту. Кажется в этом случае мы избавляемся от боли, но подозреваю что FLOPS сильно падает. Стоит ли так делать или это древнее зло, которое победит Decimal?
Decimal и есть число (или массив чисел в других языках) и экспонента. Да, это негативно (иногда незначительно) влияет на производительность по сравнению с обычными float. Поэтому тут скорее встаёт вопрос, есть ли поддержка Decimal в языке или СУБД. Для цены одного актива в другом часто используют fractions. Например, USD/RUB будет храниться как дробь Fraction(85, 1). Так можно быстро и без лишних делений посчитать стоимость N долларов в рублях - N * Fraction(85, 1), или стоимость, скажем, евро, если сначала обменять доллары на рубли, а их на евро - USD/RUB * RUB/EUR. Источник: я разработчик на криптобирже
2. Если объекты равны, их hash должен быть равен: docs.python.org/3/reference/datamodel.html#object.__hash__ 3. любой hashable объект может быть ключом :)
Косвенно про тему флоатов Anthony выпустил любопытный ролик про аннотацию "`x: float = False` is a valid annotation??? (intermediate) anthony explains #575"
Конечно. Он составной. Есть документация + PEPы + стандарты отдельных частей (например: typing typing.readthedocs.io/en/latest/spec/index.html). Коммитеты тоже есть: Steering Council, Typing Council, C-API WG, тд.
Кстати, nan также есть для комплексных чисел. Можно получить (nan+nanj) из 1e1000j / float('inf').
Не только лишь все заметят ошибку в названии видео, ведь на самом деле там было
ЛКПП 0.6000000000000001: float
😆
Поставил 1..real лайк, спасибо за классное видео!
Спасибо)) очень полезный курс, float всегда был сложным, но очень интересным
Спасибо, было познавательно и интересно!
Было странно среди "популярных ошибок" не увидеть расстановку скобочек. Ну и вообще - усердное применение успешно усвоенных в курсе средней школы правил элементарной алгебры для всяческого "упрощения". Власти скрывают!
Не знаю, стало ли понятно слушателям, что вообще-то одному и тому же float могут соответствовать несколько десятичных литералов (так что точное значение можно задавать только float.fromhex). Эти моменты (в т.ч. поведение repr) хорошо изложены в Tutorial (15. Floating-Point Arithmetic).
Да, на него есть ссылка в материалах!
По-моему, сейчас двоичную запись нецелых чисел в школах не пропускают. Это действительно не такая сложная тема.
43 минуты пролетели незаметно, думал выпуск как обычно на 20+ минут)
Криптобиржи часто(всегда?) используют для чисел два поля: число как int и экспоненту.
Кажется в этом случае мы избавляемся от боли, но подозреваю что FLOPS сильно падает. Стоит ли так делать или это древнее зло, которое победит Decimal?
Спасибо! Про ваш вопрос: не знаю, я не представляю, что делают крипто-биржи внутри. Раз используют, то возможно не просто так :)
Decimal и есть число (или массив чисел в других языках) и экспонента. Да, это негативно (иногда незначительно) влияет на производительность по сравнению с обычными float. Поэтому тут скорее встаёт вопрос, есть ли поддержка Decimal в языке или СУБД.
Для цены одного актива в другом часто используют fractions. Например, USD/RUB будет храниться как дробь Fraction(85, 1). Так можно быстро и без лишних делений посчитать стоимость N долларов в рублях - N * Fraction(85, 1), или стоимость, скажем, евро, если сначала обменять доллары на рубли, а их на евро - USD/RUB * RUB/EUR.
Источник: я разработчик на криптобирже
1. Думал, что С++ сложный, но и в Python хватает нюансов )
2. Почему 1 равно 1.0 и равно True для hash(.)?
3. Кто допустил float в качестве ключа )?
2. Если объекты равны, их hash должен быть равен: docs.python.org/3/reference/datamodel.html#object.__hash__
3. любой hashable объект может быть ключом :)
@@sobolevn , по 2. Но ведь 1 != 1.0
@@Anatolii_V_Novikov попробуйте `assert 1 == 1.0` :)
@@sobolevn я пробовал 1 == 1.0, выдал false
@@sobolevn а так-то да, если 1.0 внутри хэш-метода приводится к 1, и true приводится к интовой 1, то тогда понятно
Косвенно про тему флоатов Anthony выпустил любопытный ролик про аннотацию "`x: float = False` is a valid annotation??? (intermediate) anthony explains #575"
я хотел сделать `--strict-bool`, но потом забыл про него :) github.com/python/mypy/issues/8363 возможно, как раз - повод заняться!
А вот и PR: github.com/python/mypy/pull/17487
21:22 А что у python есть стандарт? вот прям стандарт, с голосованием и комитетом? что-то новенькое.
Конечно. Он составной. Есть документация + PEPы + стандарты отдельных частей (например: typing typing.readthedocs.io/en/latest/spec/index.html). Коммитеты тоже есть: Steering Council, Typing Council, C-API WG, тд.
@@sobolevn ой не не не, все таки не корректно называть спецификацию стандартом, а советы комитетами. это все разные сущности.
@@ztarlitz отчего-ж? потому что спецификация свободно доступна, в отличие от стандартов (например C)? И чем совет хуже комитета?! Вся власть советам!
@@sergeybkirpichev6487да, согласен.