Rumah >Java >javaTutorial >Mengapa Kod Java Saya Gagal dengan Limpahan Integer Apabila Cuba Mencari Faktor Utama 600851475143?
Limpahan Integer dengan Nombor Besar
Coretan kod di atas cuba mencari faktor perdana terbesar bagi integer tertentu, 600851475143. Walau bagaimanapun, apabila kod dijalankan, ia gagal dengan mesej ralat yang menunjukkan bahawa integer juga besar.
Apabila bekerja dengan nombor yang besar di Java, adalah penting untuk mengambil kira jenis data yang tersedia dan hadnya.
Integer
Integer dalam Java diwakili menggunakan nilai lebar tetap. Integer 32-bit (jenis int) boleh memegang nilai dari -2^31 hingga 2^31-1 (kira-kira -2 bilion hingga 2 bilion). Integer 64-bit (jenis panjang) boleh memegang nilai dari -2^63 hingga 2^63-1 (kira-kira -9 quintillion hingga 9 quintillion).
Dalam kod contoh, nombor yang diberikan, 600851475143, melebihi julat integer 32-bit. Akibatnya, Java mentafsir nilai literal sebagai integer 32-bit dan tersalah memotongnya kepada nilai negatif, yang membawa kepada ralat limpahan.
Huruf Panjang
Untuk menentukan nilai literal sebagai integer 64-bit, ia mesti diakhiri dengan "L". Contohnya, 600851475143L ialah perwakilan yang sah bagi nombor yang diingini dalam Java.
Kod Disemak
Dengan menukar nilai literal kepada 600851475143L, kami boleh membetulkan isu limpahan dan berjaya melaksanakan program ini.
... obj.function(600851475143L); ...
Atas ialah kandungan terperinci Mengapa Kod Java Saya Gagal dengan Limpahan Integer Apabila Cuba Mencari Faktor Utama 600851475143?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!