TGViewer
Java Developer Java Developer @java_tg · 14.8K subscribers
Post #3385 3.48K
👩‍💻 Как работает BigDecimal?

BigDecimal — это класс для работы с числами высокой точности. Он нужен там, где float и double перестают быть надёжными: например, в финансовых расчётах, налогах или научных задачах.

В отличие от double, BigDecimal не страдает от ошибок округления, вызванных двоичной арифметикой. Он хранит значение точно — в виде строки, которую мы явно передаём:
BigDecimal money = new BigDecimal("123.456");

Никогда не создавайте BigDecimal из double, иначе вы получите уже округлённое число.


Класс BigDecimal — immutable: любые операции, как у String, создают новый объект:
BigDecimal result = money.add(BigDecimal.valueOf(10));


Для арифметики используются методы (add, subtract, multiply, divide) — потому что операторы + - * / тут не работают.

Для округления используется setScale() с указанием режима:
money.setScale(2, RoundingMode.HALF_UP);

Это важно: без указания RoundingMode можно получить ArithmeticException, особенно при делении.


И ещё один подводный камень — сравнение:
new BigDecimal("1.5").equals(new BigDecimal("1.50")) // false
new BigDecimal("1.5").compareTo(new BigDecimal("1.50")) // 0

equals() сравнивает и значение, и масштаб (scale). А compareTo() сравнивает только числа — и это то, что нужно в большинстве случаев.


Если вы работаете с деньгами, расчётами процентов, скидок, налогов — забудьте про double, вам нужен BigDecimal.

❤ — если было полезно

tags: #обучение

📱 Java Developer | Чат
  • ❤ 51
  • 👍 14
  • 🔥 4
  • 🤩 1
More from @java_tg
  1. Oct 1, 2026👩‍💻 Что находится внутри OpenJDK Официальный репозиторий JDK — хорошее место, если хочет…
  2. Sep 30, 2026👩‍💻 Гексагональная архитектура в Spring Boot Автор статьи показывает альтернативу: вынес…
  3. Sep 29, 2026👩‍💻 Ищем баги в Java-коде до запуска приложения Нашли open-source инструмент для статиче…
  4. Sep 28, 2026Post #4376
  5. Sep 28, 2026Как спроектировать ИИ-агента, который работает с корпоративными данными, соблюдает права д…
  6. Sep 28, 2026💻 Как быстро визуализировать SQL-схему Нашли инструмент, который умеет: 🫡 Строить ER-диа…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →