Cara Mengasingkan Ganda menjadi Bahagian Integer dan Perpuluhan

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan meneroka pelbagai kaedah untuk memisahkan bahagian integer dan perpuluhan jenis titik terapung di Jawa, iaitu float dan double .

2. Masalah dengan Jenis Titik Terapung

Mari kita mulakan dengan melihat pecahan sederhana, dan cara naif untuk melakukan pemisahan, melalui pemeran:

double doubleNumber = 24.04; int intPart = (int) doubleNumber; System.out.println("Double Number: " + doubleNumber); System.out.println("Integer Part: " + intPart); System.out.println("Decimal Part: " + (doubleNumber - intPart));

Apabila kami cuba menjalankan kod di atas, inilah yang kami dapat:

Double Number: 24.04 Integer Part: 24 Decimal Part: 0.03999999999999915

Bertentangan dengan jangkaan kami, output tidak mencetak bahagian perpuluhan dengan betul. Oleh itu, nombor Titik Terapung tidak sesuai untuk pengiraan di mana kesalahan pusingan tidak dapat diterima.

3. Pendekatan Pertama: Memisahkan Rentetan

Pertama sekali, mari kita menukar nombor perpuluhan menjadi setara String . Kemudian kita boleh membahagikan String pada indeks titik perpuluhan.

Mari kita fahami ini dengan contoh:

double doubleNumber = 24.04; String doubleAsString = String.valueOf(doubleNumber); int indexOfDecimal = doubleAsString.indexOf("."); System.out.println("Double Number: " + doubleNumber); System.out.println("Integer Part: " + doubleAsString.substring(0, indexOfDecimal)); System.out.println("Decimal Part: " + doubleAsString.substring(indexOfDecimal)); 

Keluaran kod di atas adalah:

Double Number: 24.04 Integer Part: 24 Decimal Part: .04

Hasilnya betul-betul seperti yang kita harapkan. Tetapi, masalahnya di sini adalah batasan menggunakan String - yang bermaksud kita tidak akan dapat melakukan operasi aritmetik yang lain sekarang.

4. Pendekatan Kedua: Menggunakan BigDecimal

The BigDecimal kelas di Jawa menyediakan penggunanya dengan kawalan sepenuhnya ke atas penggenapan tingkah laku. Kelas ini juga menyediakan operasi untuk aritmetik, manipulasi skala, pembundaran, perbandingan, hashing, dan penukaran format.

Mari gunakan BigDecimal untuk mendapatkan bahagian integer dan perpuluhan nombor titik terapung:

double doubleNumber = 24.04; BigDecimal bigDecimal = new BigDecimal(String.valueOf(doubleNumber)); int intValue = bigDecimal.intValue(); System.out.println("Double Number: " + bigDecimal.toPlainString()); System.out.println("Integer Part: " + intValue); System.out.println("Decimal Part: " + bigDecimal.subtract( new BigDecimal(intValue)).toPlainString());

Hasilnya adalah:

Double Number: 24.04 Integer Part: 24 Decimal Part: 0.04

Seperti yang dapat kita lihat di atas, outputnya seperti yang diharapkan. Kami juga dapat melakukan operasi aritmetik dengan bantuan kaedah yang disediakan di kelas BigDecimal .

5. Kesimpulan

Dalam artikel ini, kami membincangkan pelbagai kaedah untuk memisahkan bahagian integer dan perpuluhan jenis titik terapung. Kami juga membincangkan faedah menggunakan BigDecimal untuk pengiraan titik terapung.

Juga, tutorial terperinci kami mengenai BigDecimal dan BigInteger di Java membincangkan lebih banyak ciri dan senario penggunaan kedua-dua kelas tersebut.

Akhirnya, kod sumber lengkap untuk tutorial ini terdapat di GitHub.