Перейти к основному содержимому

Преобразовать строку в двойную в Java

· 2 мин. чтения

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 .