Это эквивалентно Java методу с тем же именем , который задокументирован как:
Преобразует этот BigDecimal в двойной. Это преобразование аналогично сужающему примитивному преобразованию из двойного в плавающее, как определено в Спецификации языка Java ™: если этот BigDecimal имеет слишком большую величину, представленную как двойное, он будет преобразован в Double.NEGATIVE_INFINITY или Double.POSITIVE_INFINITY, в зависимости от ситуации. Обратите внимание, что даже когда возвращаемое значение конечно, это преобразование может потерять информацию о точности значения BigDecimal.
Кажется, на самом деле это не говорит об этом, но он должен вернуть double
, ближайший к BigDecimal
. Обратите внимание, что для достаточно больших чисел существуют большие промежутки между ближайшими double
с.
Я сомневаюсь, что двойник может хранить BigDecimal.
В большинстве случаев не может. Если вы конвертируете BigDecimal
в Double
и обратно: BigDecimal(aBigDecimal.doubleValue)
, результат обычно не будет равен aBigDecimal
. Есть даже isExactDouble
метод для проверки.
Но для этого конкретного использования (первоначальное предположение о квадратном корне) это не имеет значения (OTOH, возможна бесконечность, но вы можете просто проверить это).