170 похожих чатов

Всем привет! У меня на беке финансовые данные хранятся аля

amount * 100 чтоб хранить только integers. Вопрос: как сделать лучше – что бы только бек об этом знал, т.е. перед отдачей данных на фронт делить их на 100, или пусть фронт обрабатывает decimal values и шлет на бек только integer? Ибо я вижу минусы в каждом из подходов, потому просто интересно как лучше (я не бекендер, опыта ноль)

16 ответов

27 просмотров

Делай так, как подскажет сердце

Максим
-

Что это значит?

Лучше отправляй так как в бд сохраняешь

Dmytro-Svyrydenko Автор вопроса
Kvhqm Mboe
Делай так, как подскажет сердце

Сердце подсказывает что делить на 100 для каждого респонса это пизд*ец

Dmytro-Svyrydenko Автор вопроса

Из того что я помню, его нужно юзать только когда его рил нужно юзать, потому что в common-cases он только боль вызывает

Отдавай на фронт копейки

Dmytro-Svyrydenko Автор вопроса
Алексей Попов
Отдавай на фронт копейки

Объясните позицию пожалуйста :) Потому что в данный момент на фронте я просто вынес трансформации в слой апи (как для get, так и для post/put), который еще и кешируется, так что по факту фронт работает напрямую с decimals, и это теперь не мешает

Dmytro-Svyrydenko Автор вопроса
Dmytro Svyrydenko
Объясните позицию пожалуйста :) Потому что в данн...

Потому что раньше да, я прям в коде, в формах и в UI делал fromSystemAmount – тут мой провтык, над было сразу в слой апи вынести этот трансформ

Dmytro Svyrydenko
Объясните позицию пожалуйста :) Потому что в данн...

Система работает только с одной валютой, или с разными?

Dmytro-Svyrydenko Автор вопроса
Алексей Попов
Система работает только с одной валютой, или с раз...

С разными На беке храню amount + refAmount refAmount – amount в base валюте юзера refAmount = amount * currencyRate (чтобы не пересчитывать каждый раз + хранить актуальный курс на дату транзакции)

А странные числа типа 19.200000003, пока не получал?

Dmytro-Svyrydenko Автор вопроса
Алексей Попов
А странные числа типа 19.200000003, пока не получа...

При делении на 100 получал, конечно :) Но: 1) В UI все числа проходят через format для юзер-локали, потому эта проблема отпадает из-за toFixed(2) 2) toSystemAmount когда обратно умножает на 100, обрезает все decimals В итоге – в данный момент 0 проблем Но мне интересно какие конкретно кейсы у вас есть на уме, ибо я в этой области опыта не имею)

первое, что приходит в голову - на фронте сами разберутся, как им приводить в нужный вид. Может округлят, может отбросят копейки, или вообще прописью отрисуют Правда если нужен лёгкий фронт, то готовить всё нужно на беке

Dmytro-Svyrydenko Автор вопроса
Алексей Попов
первое, что приходит в голову - на фронте сами раз...

А, ну это да, понятно В любом случае, что decimal, что integer, фронт должен обработать используя .toLocaleString(), так что «усложнения» никакого нету)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта