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

Парни, что делать с ошибкой 0.1 + 0.2 если дело

касается денег?

26 ответов

14 просмотров

(0.1 * 10 + 0.2 * 10) / 10

использовать BigInt ?

Если в рублях, можно всегда считать в целом числе количество копеек

Denis-Deniskov Автор вопроса

А если кто-то забудет такое сделать?

Denis-Deniskov Автор вопроса
Nelkor
Если в рублях, можно всегда считать в целом числе ...

О если у нас есть тысячные? Ну например мы банк считаем сложный процент, там будут очень маленькие доли копеек

Denis Deniskov
О если у нас есть тысячные? Ну например мы банк сч...

обычно используют миллиардные доли копеек

Denis-Deniskov Автор вопроса

Так это проблема любого языка программирования

Denis Deniskov
О если у нас есть тысячные? Ну например мы банк сч...

Банки разве оперируют долями копеек? Там, вроде бы, всегда округление идёт

Denis Deniskov
О если у нас есть тысячные? Ну например мы банк сч...

Я как-то встречал мнение, что деньги лучше хранить в дробных единицах типа копеек, центов и так далее, а на фронте выводить в нужном формате

Sergiy Shatunov
округление до долей копеек

Если у банка есть округление до долей копеек, значит есть и правила такого округления. Соответственно, математику нужно реализовать в соответствии с этими конкретными правилами

Denis-Deniskov Автор вопроса

Просто пхп считать не умеет)))))

Denis-Deniskov Автор вопроса

Ну так же как в JS и в любом другом языке программирования

Получается, это люди неправильно считают. Компьютер умный, он не может ошибаться

никто в здравом уме float-ы для денег не использует

Denis Deniskov
А что используют?

специально созданные для этого структуры

Это не ошибка а нормальное поведение. Бинарное сложение чисел

Ещё один

Вот так это

Не язык а компилятор

Ifteakhor Saidkhoja
(0.1 * 10 + 0.2 * 10) / 10

Такой способ не сработает, если будут сотые, а в расчётах они есть.

Denis
Такой способ не сработает, если будут сотые, а в р...

Считать как два разных инта числа до запятой и после)

Не хранить деньги во флоатах, очевидно

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта