Apa itu float di Jawa?

102

Saya menulis kode ini:

float b = 3.6;

dan saya mendapatkan ini:

Kesalahan: Masalah kompilasi yang belum terselesaikan: 
    Jenis ketidakcocokan: tidak dapat mengubah dari ganda menjadi mengambang

Mengapa? Apa definisi dari float?

t0mkaka
sumber
1
@Sneftel Itu bukan duplikat dari pertanyaan ini. Pertanyaan ini menanyakan mengapa tidak dikompilasi (yang jawabannya adalah 'Anda harus menambahkan a fke literal'), sedangkan pertanyaan lainnya menanyakan mengapa Anda harus menambahkan f. Meskipun saling terkait, itu bukan duplikat.
Mark Rotteveel
Lihat meta.stackexchange.com/questions/217401/… . Jawaban atas pertanyaan terkait adalah jawaban atas pertanyaan ini.
Sneftel

Jawaban:

180

Di Jawa, ketika Anda mengetikkan angka desimal sebagai 3.6, itu diartikan sebagai double. doubleadalah floating point IEEE 754 presisi 64-bit, sedangkan floatfloating point IEEE 754 presisi 32-bit. Karena a floatkurang tepat dari a double, konversi tidak dapat dilakukan secara implisit.

Jika Anda ingin membuat pelampung, Anda harus mengakhiri nomor Anda dengan f(yaitu:) 3.6f.

Untuk penjelasan lebih lanjut, lihat definisi tipe data primitif dari tutorial Java .

Nicolas
sumber
40

Lakukan

float b= 3.6f;

Literal floating-point adalah tipe float jika diakhiri dengan huruf ASCII F atau f; jika tidak, jenisnya ganda dan secara opsional dapat diberi akhiran dengan huruf D atau d ASCII

Jigar Joshi
sumber
Apakah ada cara untuk memeriksa apakah sebuah string hanya memiliki nilai float?
MasterJoe
13

Masalahnya adalah bahwa angka desimal default menjadi dua kali lipat. Dan karena double tidak cocok dengan float, Anda harus memberi tahu secara eksplisit bahwa Anda sengaja mendefinisikan float. Jadi pergilah dengan:

float b = 3.6f;
Jan Zyka
sumber
8

Di JAVA, nilai seperti:

  1. 8.5
  2. 3.9
  3. (dan seterusnya..)

Diasumsikan ganda dan tidak mengambang .

Anda juga dapat melakukan cast untuk menyelesaikan masalah:

float b = (float) 3.5;

Solusi lain:

float b = 3.5f;

Carlos Sá
sumber