Я опытный разработчик, но не математик. Я знаю достаточно о спецификации IEEE с плавающей запятой, чтобы бояться делать предположения о разборе, печати и сравнении их.
Я знаю, что могу разобрать double
из String
, используя Double.parseDouble(String s)
. Я знаю, что могу также проанализировать эту же строку в BigDecimal
с помощью new BigDecimal(String s)
, а затем запросить у BigDecimal
double
с помощью BigDecimal.doubleValue()
.
Я взглянул на API и код для обоих методов, и кажется, что BigDecimal
имеет много разных вариантов анализа и преобразования.
Гарантированы ли оба метода (Double.parseDouble(s)
и new BigDecimal(s).doubleValue()
) для всех строковых входов, чтобы они производили одно и то же примитивное значение double
, при условии, что значение не находится вне диапазона плюс или минус Double.MAX_DOUBLE
?