Java'da float nedir?


103

Bu kodu yazdım:

float b = 3.6;

ve bunu anlıyorum:

Hata: Çözülmemiş derleme sorunu: 
    Tür uyuşmazlığı: double'dan float'a dönüştürülemez

Neden? Nedir tanımı float?



1
@Sneftel Bu, bu sorunun bir kopyası değil. O derleme değil neden bu soru (ki cevabı 'Bir eklemelisiniz olduğunu sorar feklemek gerekir neden diğer soru sorar ederken, değişmez değere') f. İlişkili olmalarına rağmen, kopya değildir.
— Mark Rotteveel

Bkz. Meta.stackexchange.com/questions/217401/… . Bağlantılı sorunun yanıtları bu sorunun yanıtlarıdır.
— Sneftel

Yanıtlar:


180

Java'da, olarak bir ondalık sayı yazdığınızda 3.6, bir double. double64 bitlik hassas IEEE 754 kayan nokta, float32 bitlik hassas IEEE 754 kayan nokta. A float, a'dan daha az kesin olduğundan double, dönüştürme örtük olarak gerçekleştirilemez.

Şamandıra oluşturmak istiyorsanız, numaranızı f(yani:) ile bitirmelisiniz 3.6f.

Daha fazla açıklama için Java öğreticisinin ilkel veri türleri tanımına bakın .


41

Bunu yapmak

float b= 3.6f;

Bir kayan noktalı hazır bilgi, ASCII F veya f harfiyle son eklenmişse float türündedir; aksi takdirde tipi çift olur ve isteğe bağlı olarak ASCII harf D veya d ile son eklenebilir


Bir dizenin sadece kayan değer olup olmadığını kontrol etmenin bir yolu var mı?
— MasterJoe

13

Mesele şu ki, ondalık sayılar varsayılan olarak ikiye katlanır. Ve çift şamandıraya uymadığından, kasıtlı olarak bir şamandırayı tanımladığınızı açıkça söylemeniz gerekir. Öyleyse şununla devam et:

float b = 3.6f;

8

JAVA'da aşağıdaki gibi değerler:

  1. 8.5
  2. 3.9
  3. (ve bunun gibi..)

Çift olarak kabul edilir ve yüzer değildir .

Sorunu çözmek için bir de cast gerçekleştirebilirsiniz:

float b = (float) 3.5;

Başka bir çözüm:

float b = 3.5f;

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.