![[Перевод] В Java нет универсального типа для денег](https://habrastorage.org/getpro/habr/upload_files/64f/bf4/2ee/64fbf42ee50c694418be6b30614b5b6c.png)
[Перевод] В Java нет универсального типа для денег
double быстрый, но хранит десятичные числа как двоичные приближения: 0.1 + 0.2 дает 0.30000000000000004. BigDecimal точен в десятичной арифметике, но дороже по памяти и CPU.Выбор зависит от задачи: для метрик и ML хватит double с допуском, для налогов и счетов нужен BigDecimal с явным RoundingMode, для низкой latency - fixed-point на long.Ошибка не в double или BigDecimal, а в выборе без понимания точности, округления и нагрузки. Подробнее - в новом переводе от команды Spring АйО. Читать далее