Это точно ведет себя, как documented:
Возвращает строку который представляет BigDecimal, как описано в методе toString(), за исключением того, что если используется экспоненциальная нотация, мощность десять регулируется, чтобы быть кратно трем (инженерных обозначений) таким образом, что целая часть ненулевых значений будет находиться в диапазоне от 1 до 999.
Теперь toString()
указывает:
Стандартный канонической строки форма BigDecimal создается следующим образом: во-первых, абсолютное значение немасштабированного значения BigDecimal преобразуется в строку в базе десять с использованием символов от 0 до 9 без ведущих нулей (кроме if его значение равно нулю, в этом случае используется один символ «0»).
Затем вычисляется скорректированный показатель степени; это отрицательная шкала, плюс количество символов в преобразованном немасштабированном значении, меньше одного. То есть, -scale + (ulength-1), где ulength - это длина абсолютного значения немасштабированного значения в десятичных разрядах (его точность).
Если масштаб больше или равен нулю, а скорректированный показатель больше или равен -6, число будет преобразовано в символьную форму без использования экспоненциальной нотации.
В нашем случае шкала равна 0, поэтому скорректированный показатель составляет 16 (или что-то в этом роде). Поэтому значение преобразуется в символьную форму без использования экспоненциальной нотации.
Обратите внимание, что один из ваших «разделов» в номере имеет четыре нуля в, кстати. Вы имели в виду это? –