Menukar Java String menjadi Double

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan membahas banyak cara untuk menukar String menjadi double di Java.

2. Double.parseDouble

Kita boleh menukar String menjadi double menggunakan Double. kaedah parseDouble :

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

3. Double.valueOf

Begitu juga, kita boleh menukar String menjadi Double berkotak menggunakan kaedah Double.valueOf :

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

Perhatikan bahawa nilai Double.valueOf yang dikembalikan adalah Double berkotak . Sejak Java 5, Double box ini ditukarkan oleh pengkompil menjadi double primitif jika diperlukan.

Secara amnya, kita harus memilih Double.parseDouble kerana tidak memerlukan penyusun untuk melakukan penyahkodan secara automatik.

4. DecimalFormat.parse

Apabila String yang mewakili double mempunyai format yang lebih kompleks, kita dapat menggunakan DecimalFormat .

Sebagai contoh, kita boleh menukar nilai mata wang berasaskan perpuluhan tanpa membuang simbol bukan angka:

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);

Mirip dengan Double.valueOf , kaedah DecimalFormat.parse mengembalikan Nombor , yang boleh kita ubah menjadi dua primitif menggunakan kaedah doubleValue . Selain itu, kami menggunakan kaedah setParseBigDecimal untuk memaksa DecimalFormat.parse mengembalikan BigDecimal .

Biasanya, DecimalFormat lebih maju daripada yang kita mahukan , oleh itu, kita harus memilih Double.parseDouble atau Double.valueOf .

Untuk mengetahui lebih lanjut mengenai DecimalFormat , sila periksa panduan praktikal untuk DecimalFormat .

5. Penukaran Tidak Sah

Java menyediakan antara muka yang seragam untuk menangani String s angka yang tidak sah .

Terutama, Double.parseDouble , Double.valueOf , dan DecimalFormat.parse membuang NullPointerException apabila kita lulus .

Begitu juga, Double.parseDouble dan Double.valueOf membuang NumberFormatException apabila kami melewati String yang tidak sah yang tidak dapat diuraikan menjadi double (seperti & ).

Terakhir, DecimalFormat.parse melemparkan ParseException apabila kita melewati Rentetan yang tidak sah .

6. Mengelakkan Penukaran Tidak Berguna

Sebelum Java 9, kita dapat membuat Double berkotak dari String dengan memberi contoh Double :

new Double("1.23");

Pada versi 9, Java secara rasmi menghentikan kaedah ini.

7. Kesimpulannya

Kesimpulannya, Java memberi kita banyak kaedah untuk mengubah String menjadi nilai ganda .

Secara amnya, kami mengesyorkan menggunakan Double.parseDouble kecuali Double berkotak diperlukan.

Kod sumber untuk artikel ini, termasuk contoh, boleh didapati di GitHub.