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?



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 .


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


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;

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;

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.