Результаты этого конструктора могут быть несколько непредсказуемыми. Один можно предположить, что писать новый BigDecimal (0.1) в Java создает BigDecimal, который в точности равен 0,1 (немасштабированное значение 1, с масштабом 1), но это на самом деле равно 0.1000000000000000055511151231257827021181583404541015625. Это связано с тем, что 0,1 не может быть представлено точно как двойное (или для этого вещество, как двоичная доля любой конечной длины). Таким образом, значение , которое передается конструктору, не точно равно 0,1, независимо от того, что произошло.
Строка конструктор, с другой стороны, вполне предсказуемо: писать новый BigDecimal («0,1») создает BigDecimal, который точно равно 0,1, как можно было бы ожидать. Следовательно, обычно рекомендуется, чтобы конструктор String использовался в .
Когда двойной должен быть использован в качестве источника для BigDecimal, обратите внимание, что этот конструктор обеспечивает точное преобразование
Привет @Ankur. действительно очень приятно объяснил :) Спасибо. когда следует использовать 'public BigDecimal (double val)' подрядчик? Любой соответствующий пример? –
@ VishalZanzrukia ответ отредактирован, в основном должен использоваться, когда вам нужно точное преобразование переданного в двойном значении, порекомендует вам прочитать документы, я предоставил вам ссылки –