Фактический результат - 37.1465555388, масштаб которого должен быть 10, чтобы быть точным.
Что говорит JavaDoc, так это то, что предпочтительный масштаб - это разница, означающая, что если результат на самом деле не должен быть равен 10, то попытался бы сделать это 8. Например, если бы вы поделили на 2, чья шкала также равна 0, результат был бы 18573277.76940000 (шкала 8).
РЕДАКТИРОВАТЬ: маленькое добавление - вы можетефорсировать деление до определенного масштаба, используя перегруженные методы деления:
divide(BigDecimal, RoundingMode)
, что даст BigDecimal
со шкалой this
и значением, округленным с использованием указанного метода округленияесли результат на самом деле потребует большего количества десятичных знаков, чтобы быть точным.
divide(BigDecimal, scale, RoundingMode)
, который даст BigDecimal
с указанным масштабом и значением, округленным указанным методом, если необходимо.
Это может быть полезно, если ваше деление на число, которое вы знаете, может вызвать повторяющиеся десятичные числа, например 3 (1/3 = 0,333333 ...), поскольку, если это произойдет, простое деление wiскину исключение.Ограничение до максимального количества десятичных знаков поможет вам избежать исключения, но сделает ваши вычисления менее точными.