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.