1. Обзор
В этом руководстве мы рассмотрим множество способов преобразования строки
в двойную
в Java.
2. Двойной.parseDouble
Мы можем преобразовать строку
в двойную
, используя функцию Double.
Метод parseDouble
:
assertEquals(1.23, Double.parseDouble("1.23"), 0.000001);
3. Двойное.значениеOf
Точно так же мы можем преобразовать String
в упакованный Double
, используя метод Double.valueOf
:
assertEquals(1.23, Double.valueOf("1.23"), 0.000001);
Обратите внимание, что возвращаемое значение Double.valueOf
представляет собой упакованный Double
. Начиная с Java 5, этот упакованный Double
преобразуется компилятором в примитивный double
, где это необходимо.
В общем, мы должны предпочесть Double.parseDouble,
так как он не требует от компилятора автоматической распаковки.
4. ДесятичныйФормат.parse
Когда строка
, представляющая двойное
число, имеет более сложный формат, мы можем использовать DecimalFormat
.
Например, мы можем преобразовать десятичное значение валюты, не удаляя нечисловые символы:
DecimalFormat format = new DecimalFormat("\u00A4#,##0.00");
format.setParseBigDecimal(true);
BigDecimal decimal = (BigDecimal) format.parse("-$1,000.57");
assertEquals(-1000.57, decimal.doubleValue(), 0.000001);
Подобно Double.valueOf
, метод DecimalFormat.parse
возвращает число
, которое мы можем преобразовать в примитивное значение типа double
с помощью метода doubleValue
. Кроме того, мы используем метод setParseBigDecimal
, чтобы заставить DecimalFormat.parse
вернуть BigDecimal
.
Обычно DecimalFormat
является более продвинутым, чем нам требуется, поэтому вместо этого мы должны отдавать предпочтение Double.parseDouble
или Double.valueOf
.
Чтобы узнать больше о DecimalFormat
, ознакомьтесь с практическим руководством по DecimalFormat
.
5. Недействительные преобразования
Java предоставляет единый интерфейс для обработки недопустимых числовых строк
s.
Примечательно, что Double.parseDouble
, Double.valueOf
и DecimalFormat.parse генерируют исключение
NullPointerException, когда
мы передаем значение null.
Аналогично, Double.parseDouble
и Double.valueOf генерируют исключение
NumberFormatException, когда
мы передаем недопустимую строку, которая не может быть проанализирована как двойная
(например, &
).
Наконец, DecimalFormat.parse генерирует
исключение ParseException
, когда мы передаем недопустимую строку.
6. Избегайте устаревших конверсий
До Java 9 мы могли создать упакованный Double
из String
, создав экземпляр Double
:
new Double("1.23");
Начиная с версии 9, этот метод официально признан устаревшим в Java.
7. Заключение
В заключение, Java предоставляет нам несколько методов для преобразования String
в значения типа double
.
Как правило, мы рекомендуем использовать Double.parseDouble
, если не требуется упакованный Double
.
Исходный код этой статьи, включая примеры, можно найти на GitHub .