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

Как лучше работать с деньгами в JS? Integer или какую-то

библиотеку юзать?

41 ответов

7 просмотров

как вариант, можно BigInt приспособить

Dmitry-Croft Автор вопроса
Sergiy Shatunov
как вариант, можно BigInt приспособить

Это да, но мне и float pointing хватит для интегеров. А вообще есть какой-то один путь, по которому идёт?

Dmitry Croft
Это да, но мне и float pointing хватит для интегер...

в основном оперируют миллионными долями копеек (это случаи которые я знаю)

делают интами, да

Dmitry Croft
Это как?

используют множитель и округляют

зачем библиотека? просто в интах работаешь, а на клиент отдаешь флотом

Dmitry-Croft Автор вопроса
Vanya Leyn ✙
зачем библиотека? просто в интах работаешь, а на к...

А как работать с делением и умножением у интов?

Dmitry-Croft Автор вопроса
Vanya Leyn ✙
А в чем проблема?

например нам нужно взять 1.25% от $0.40. Нам придётся всё это переводить в инты т.е. 125 * 40 = 5000, т.е. 0.005 Но так как мы храним в интах, то нам нужно запомнить где находится дробная часть, потом это вручную округлить (тоже хз по какому правилу это лучше делать). В итоге непонятно получится 0.00 или 0.01

Ты когда доллары интовые умножишь 100 раз на какие то проценты, то что бы отдать клиенту потребуется поделить на 100 только 1 раз

Dmitry-Croft Автор вопроса
Vanya Leyn ✙
Ты когда доллары интовые умножишь 100 раз на какие...

Как я могу поделить 1 цент на 100 чтобы получить доллары? Это же невозможно с интами

Dmitry-Croft Автор вопроса
Vanya Leyn ✙
Цент в интах это 1, доллары - 1/100=0.01

в интах представить 0.01? как это сделать без тех манипуляций что я выше описывал?

Dmitry Croft
в интах представить 0.01? как это сделать без тех ...

Ничего не понял 0.01 это 1 (или 10 или 100, зависит от изначально выбранного коефициента) в интах

Dmitry-Croft Автор вопроса

Если у меня всё хранится в интегерах, то как у меня получится 1/100 и получить 0.01?

Dmitry-Croft Автор вопроса
Vanya Leyn ✙
Так 1/100 это 0.01, алло???

Да где в итах 0.01 есть

Dmitry Croft
Да где в итах 0.01 есть

Епта блять пиздец Ты блять все доллары на 100 умножил, поэтому бля 1 ( У ТЕБЯ ) РАВЕН 0.01 ДОЛЛАРОВ

С чего это? Добрые как раз из-за копеек

Кстати а правда. В банках все в копейка в базах записано? Или рубли с запятой

Dmitry-Croft Автор вопроса
Yaroslav Ivanov
С чего это? Добрые как раз из-за копеек

Допустим у клиента в банке лежит сумма 1.01 рублей, ты ему начисляешь 50% каждый месяц от это суммы? Какую ты начислишь сумму в следующем месяце? Какая у него будет в итоге на счете?

Dmitry Croft
Допустим у клиента в банке лежит сумма 1.01 рублей...

Ну 1.01 это 101 копейка. 50% с округление числа в меньшую сторону

Dmitry-Croft Автор вопроса
Yaroslav Ivanov
Ну 1.01 это 101 копейка. 50% с округление числа в ...

Окей. Округляем в меньшую. Как ты решаешь в какую сторону округлять?

Dmitry Croft
Окей. Округляем в меньшую. Как ты решаешь в какую ...

Что как? В меньшую. Банки всегда так делают

Dmitry-Croft Автор вопроса
Yaroslav Ivanov
Что как? В меньшую. Банки всегда так делают

Я имею ввиду, как технически ты округлишь интегер до меньшего?

Dmitry-Croft Автор вопроса
Dmitry-Croft Автор вопроса
Yaroslav Ivanov
Math.round))))

Тогда ты забиваешь на интегеры, и работает с деньгами в float

Dmitry Croft
Мы использует интегеры (BigInt), а не float. Мы не...

Ну у джс намбера макс значение 9007199254740991 Делим на сто, и это больше девяти тысяч триллинов, больше чем в мире есть денег Что у тебя за вычисления что нужны бигинты?

Dmitry-Croft Автор вопроса
✙ Nikita 🇺🇦🇵🇱🇱🇻🇱🇹🇪🇪🇺🇸🇬🇧🇨🇿🇫🇷🇩🇪🇮🇹🇧🇬🇹🇼🇯🇵🇰🇷🇹🇷🇪🇸🇬🇷
Ну у джс намбера макс значение 9007199254740991 Д...

Биг инты я сказал для того, чтобы у вас не было соблазно поделить на 100 и получить дробную часть. Просто идея же в том, чтобы уйти от float и получать более точные значения при работе с деньгами

Dmitry Croft
Биг инты я сказал для того, чтобы у вас не было со...

Вы в промежуточных значениях можете получить флоуты, но на выходе всегда переводить в инты

У меня тинькофф по 60 рублей за (уведомление об операциях снимает в месяц). НИ в каком банке на этот счёт не будут заморачиваться)

Dmitry-Croft Автор вопроса
Alex
У меня тинькофф по 60 рублей за (уведомление об оп...

да дело не в этом. Дело в том как в техническом плане это конроллировать. С деньгами в Float работать вроде как нельзя из-за неточности. Решение проблемы это Integers или строки. Строки медленно, а с Integer нужно свой костыль писать (Как в Java BigDecimal)

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

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

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
1
Святости? Когда дотумкаешь что открытое лучше закрытого - кастани
zamtmn
9
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
ты вот так хотел? а пурджить arg бесполезно это не макрос, вот рестроить arg смысл есть, но в конце области видимости, а не перед началом новой области видимости.
ProMiNick
7
Карта сайта