Перетворення рядка Java на подвійний

1. Огляд

У цьому підручнику ми розглянемо багато способів перетворення рядка у подвійний на Java.

2. Double.parseDouble

Ми можемо перетворити рядок у подвійний за допомогою Double. метод parseDouble :

assertEquals(1.23, Double.parseDouble("1.23"), 0.000001);

3. Double.valueOf

Подібним чином ми можемо перетворити рядок у коробку Double за допомогою методу Double.valueOf :

assertEquals(1.23, Double.valueOf("1.23"), 0.000001);

Зверніть увагу, що повернене значення Double.valueOf - це поле Double . З Java 5 цей Double в коробці Double перетворюється компілятором у примітивний double, де це потрібно.

Загалом, ми повинні віддавати перевагу Double.parseDouble, оскільки він не вимагає від компілятора автоматичного розпакування.

4. DecimalFormat.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 повертає число , яке ми можемо перетворити на примітивний подвійний за допомогою методу doubleValue . Крім того, ми використовуємо метод setParseBigDecimal, щоб змусити DecimalFormat.parse повернути BigDecimal .

Зазвичай формат DecimalFormat є більш просунутим, ніж ми вимагаємо, отже, ми повинні віддавати перевагу Double.parseDouble або Double.valueOf .

Щоб дізнатись більше про DecimalFormat , перегляньте практичний посібник із DecimalFormat .

5. Недійсні конверсії

Java надає єдиний інтерфейс для обробки недійсних числових рядків .

Слід зазначити, що Double.parseDouble , Double.valueOf і DecimalFormat.parse кинути NullPointerException , коли ми проходимо нуль.

Подібним чином Double.parseDouble і Double.valueOf викидають NumberFormatException, коли ми передаємо недійсний рядок, який неможливо проаналізувати на double (наприклад, & ).

Нарешті, DecimalFormat.parse кидає ParseException , коли ми переходимо неприпустиме String.

6. Уникнення знецінених конверсій

До Java 9 ми могли створити коробку Double з рядка , створивши Double :

new Double("1.23");

Починаючи з версії 9, Java офіційно застаріла цей метод.

7. Висновок

На закінчення, Java пропонує нам декілька методів для перетворення рядка s у подвійні значення.

Загалом, ми рекомендуємо використовувати Double.parseDouble, якщо не потрібний Double .

Вихідний код цієї статті, включаючи приклади, можна знайти на GitHub.