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

Если я буду складывать много разных FF = math.Ceil(FF*100) /

100, можно гарантировать что оно никогда не превратится во что-то вроде 123.999999999?

16 ответов

13 просмотров

это особенности float, так что гарантировать нельзя

Andrey-Burov Автор вопроса

промежуточные буду округлять с помощью ceil, а сумму с помощью round и вроде все ОК должно быть

Andrey Burov
промежуточные буду округлять с помощью ceil, а сум...

если у тебя известно сколько цифр после запятой (например, цена товара), то лучше считать все как int, а после делить на 100

Можно гарантировать, что превратится

Владимир
Только? Поделите столбиком 10/9.. ;)

очевидно) только в задаче, насколько я понял, не предполагается деление, а только лишь сложение

МСМК
очевидно) только в задаче, насколько я понял, не п...

Сложение и умножение не приводят нив какой системе счисления к нерациональным числам.. насколько помню теорию за первый курс.. проблема в машинном переводе из десятичной в двоичную системы и обратно,т.к. операции имеют под капотом деление. Для корректных вычислений двоично-десятичная арифметика и 4-х разрядные системы.. ;) ну или десимал, что и есть вычисления в целых числах со сдвигом. Только умножать надо не на 100, а на кратно двум.. ;)

МСМК
если у тебя известно сколько цифр после запятой (н...

стандартная практика - хранить деньги в микроцентах (микрокопейках) плохо работает с сатоши 🙂 (одной бирже пришлось на int128 перейти)

Andrey-Burov Автор вопроса
Daniel Podolsky
стандартная практика - хранить деньги в микроцента...

есть еще экзотически валюты где это тоже не работает Мальти́йский ску́до (итал. scudo maltese) — денежная единица Мальтийского ордена. Скудо = 12 тари = 240 грано.

Владимир
Сложение и умножение не приводят нив какой системе...

к иррациональным не приводят, но страшна не только иррациональность, но также периодичность записей

Andrey Burov
есть еще экзотически валюты где это тоже не работа...

ну и храните в микро-грано. В целом идея в том чтобы считать в долях наименьших единиц где-то в районе 12 знака после запятой чтобы нивелировать округления.

Andrey-Burov Автор вопроса
Dmitry
ну и храните в микро-грано. В целом идея в том что...

ну вот конкретно в моем случае, должны быть math.Ceil и они должны накапливаться

Andrey Burov
ну вот конкретно в моем случае, должны быть math.C...

я не вчитывался в ваш код, но для всяких систем есть рекомендации регуляторов как правильно считать и что делать при расчетах (налоговики, центробанк), какое округление использовать в каких случаях.

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

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

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
{!! $modx->runSnippet( 'multiTV',[ 'tvName'=>'slider-main1', 'docid'=>'[*id*]', 'tplConfig'=>'', 'display'=>'4', 'offset'=>'0', 'rows'=>'all', 'ra...
Роман С
4
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
PopOs or Linux Mint for a noob starter? Also do you have any articles on how to safely dual boot Windows 10 alongside it? I've heard there are a bunch problems that can occur...
Senator
14
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Из рассылки The Lazarus team is glad to announce the release of Lazarus 3.4. This is a bugfix release and was built with FPC 3.2.2. Here is the list of changes for Lazarus...
Ed Doc
4
Всем привет! поделитесь, пож-та, как кто дебажил / решал проблему с 504 Time out ошибкой от nginx, когда стучишься на свой vapor сервер? в логах /var/log/nginx/error.log е...
Paul
24
Карта сайта