Как не получить недостачу в кассе при программировании У цен в разработке есть проблема — копейки. Те самые числа после запятой. 1. При передаче через API или json число со знаком может превратиться в целочисленное (int), так и в дробное (float). 1.00 -> 1. Из-за этого при сравнении типов дальше в коде может вылезти ошибка. 2. При вычислениях с числами накапливаются погрешности. __Если сложить в php 0.1 + 0.2, то получится, не 0.3, а 0.30000000000000004 __ Казалось бы какая разница. Но в интернет-магазине числа могут умножаться, суммироваться, применяться скидки — рано или поздно погрешность округлиться не в ту сторону. Не сойдется копейка, а с ней вся бухглатерия. А еще есть крипта, где может быть сильно больше знаков после запятой. Разобрался почему так Есть стандарт IEEE 754. У него есть плюс, он офигенно быстро работает. И подходит для большинства задач, кроме денежных. Если бы не этот стандарт, то все компьютеры бы работали медленнее. Это всё особенности хранения памяти. Есть, кстати, байка про ракету в 91 году, которая накопила погрешности, отклонилась от курса и не смогла защитить от вражеской ракеты. Мы с вами не ракеты строим (я надеюсь), но бухглатерия, которая будет 3 дня искать ошибку — ощутимая потеря. Что делать? 1. Хранить всё в целых числах __1234,10 -> 123410 __и при отображении отделять копейки. Или в строках. 2. Все вычисления делать в случае с пхп, через библиотеку bcmath. В случае с другими языками использовать BigInt. В Java он, например из коробки. В 1С, кстати, такой проблемы нет. Возможно поэтому она вечно тормозит :) —————————— Это может быть хорошим вопросом при собеседовании или отборе подрядчика. Так как любой нормальный миддл — знает ответ на вопрос, он много раз разжевывался на Хабре. А тот кто только закончил курсы и притворяется опытным, в спешке «сеньор за 3 месяца» про такие детали забудет.
Как не получить недостачу в кассе при программировании У цен в разработке есть…
Из этого канала
- #488Собрал удаленный сервер и теперь могу писать код с LLM с телефона Я сейчас в…
Собрал удаленный сервер и теперь могу писать код с LLM с телефона Я сейчас в Сочи, тут часто блокируют интернет и искал как можно это решить.
- #489🎩 Где еще нет автоматизации в логистике и ecommerce Ключевой рычаг роста…
🎩 Где еще нет автоматизации в логистике и ecommerce Ключевой рычаг роста выручки и конверсии для ecommerce в логистике.
- #490Запустили мобильное приложение для hollyshop — мультибрендовый ритейлер…
Запустили мобильное приложение для hollyshop — мультибрендовый ритейлер корейской косметики. 9000 товаров, 350+ брендов, 80% трафика с мобильных.
- #486В ecommerce вообще мало, где ИИ пригодился По факту: 1. Генерация контента, но…
В ecommerce вообще мало, где ИИ пригодился По факту: 1. Генерация контента, но с валидацией человеком, а то и корректурой. На массовых товарах.
- #485Идеальная форма на сайте Всего-то 5 полей, а ушло несколько часов совместной…
Идеальная форма на сайте Всего-то 5 полей, а ушло несколько часов совместной работы с нашим дизайнером Даней. О чём нужно было подумать: 1.