Was ist float in Java?


102

Ich habe diesen Code geschrieben:

float b = 3.6;

und ich verstehe das:

Fehler: Ungelöstes Kompilierungsproblem: 
    Typinkongruenz: Konvertiert nicht von Double in Float

Warum? Was ist die Definition von float?



1
@Sneftel Das ist kein Duplikat dieser Frage. Diese Frage fragt, warum sie nicht kompiliert wird (zu der die Antwort lautet: "Sie müssen fdem Literal ein hinzufügen "), während die andere Frage fragt, warum Sie das hinzufügen müssen f. Obwohl sie verwandt sind, handelt es sich nicht um ein Duplikat.
— Mark Rotteveel

Siehe meta.stackexchange.com/questions/217401/… . Die Antworten auf die verknüpfte Frage sind Antworten auf diese Frage.
— Sneftel

Antworten:


180

Wenn Sie in Java eine Dezimalzahl als eingeben, wird diese als 3.6interpretiert double. doubleist ein IEEE 754-Gleitkomma mit 64-Bit-Genauigkeit, während floates sich um einen IEEE 754-Gleitkomma mit 32-Bit-Genauigkeit handelt. Da a floatweniger genau als a ist double, kann die Konvertierung nicht implizit durchgeführt werden.

Wenn Sie einen Float erstellen möchten, sollten Sie Ihre Nummer mit f(dh :) beenden 3.6f.

Weitere Erläuterungen finden Sie in der Definition der primitiven Datentypen des Java-Lernprogramms .


40

Mach es

float b= 3.6f;

Ein Gleitkomma-Literal ist vom Typ float, wenn es mit einem ASCII-Buchstaben F oder f versehen ist. Andernfalls ist der Typ doppelt und kann optional mit einem ASCII-Buchstaben D oder d versehen werden


Gibt es eine Möglichkeit zu überprüfen, ob eine Zeichenfolge nur einen Gleitkommawert hat?
— MasterJoe

13

Die Sache ist, dass Dezimalzahlen standardmäßig doppelt sind. Und da double nicht in float passt, müssen Sie explizit angeben, dass Sie absichtlich einen float definieren. Also geh mit:

float b = 3.6f;

8

In JAVA sind Werte wie:

  1. 8.5
  2. 3.9
  3. (und so weiter..)

Wird als doppelt und nicht schwebend angenommen .

Sie können auch eine Besetzung durchführen, um das Problem zu lösen:

float b = (float) 3.5;;

Eine andere Lösung:

float b = 3.5f;;

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.