Bahagian Int: Membongkar Kebenaran Di Sebalik 1/3 == 0
Pembahagian integer di Jawa boleh menjadi konsep yang membingungkan, terutamanya apabila ia melibatkan nilai perpuluhan. Persoalannya ialah mengapa keputusan 1 / 3 sama dengan 0, walaupun kami menjangkakan ia menjadi 0.333...
Menyingkap Aritmetik
Dalam hal ini kes, kedua-dua operan (1 dan 3) adalah integer, yang bermaksud aritmetik integer digunakan secara lalai. Walaupun mengisytiharkan pembolehubah hasil (g) sebagai dua kali ganda, penukaran tersirat berlaku selepas pembahagian.
Selok-belok Pembahagian Integer
Bahagian integer, berbanding terapung- pembahagian mata, membundarkan keputusan ke arah sifar. Hasil pembahagian sebenar, 0.333..., seterusnya dibundarkan ke bawah kepada 0. Pemproses pada dasarnya menganggap bahagian perpuluhan seolah-olah ia tidak ada.
Aritmetik Titik Terapung: Kisah Berbeza
Jika kedua-dua operan disediakan sebagai nombor titik terapung (3.0 dan 1.0), aritmetik titik terapung diutamakan. Ini menghasilkan nilai pecahan yang dijangkakan sebanyak 0.333.... Ambil perhatian bahawa walaupun hanya operan pertama ialah apungan (cth., 3.0 dan 1), aritmetik titik terapung masih digunakan.
Praktikal Penyelesaian
Untuk mendapatkan hasil perpuluhan, adalah perlu untuk melaksanakan pembahagian titik terapung secara eksplisit. Ini boleh dicapai dengan menghantar kedua-dua operan kepada beregu atau terapung:
public static void main(String[] args) { double g = (double) 1 / 3; // Explicitly cast to double System.out.printf("%.2f", g); }
Sebagai alternatif, seseorang boleh menggunakan kelas BigDecimal untuk operasi berangka yang lebih tepat.
Atas ialah kandungan terperinci Mengapa 1 / 3 Sama dengan 0 dalam Bahagian Integer Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!