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

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

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

41 ответов

22 просмотра

как вариант, можно 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)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта