Примитивные типы имеют фиксированные диапазоны и точность: long переполняется при ~9.2×10^18, а double теряет точность для десятичных дробей (0.1 + 0.2 ≠ 0.3 в числах с плавающей запятой). BigInteger обрабатывает целые числа произвольного размера. BigDecimal обрабатывает десятичные числа с точной, произвольной точностью — незаменим для финансовых вычислений.
Проблема точности чисел с плавающей запятой