float[]
PrimitivSpeichert 32-Bit Gleitkommazahlen. Halb so groß wie double[], aber mit geringerer Präzision — ideal für Grafik und große Datensätze.
0.0f32 Bit±1.4 × 10⁻⁴⁵±3.4 × 10³⁸Visualisierung
540.0f32 BitDeklaration
So reservierst du Speicher für einen float[].
// Deklaration (Standardwerte: 0.0f)
float[] koordinaten = new float[3];
// Grafik-typisch: Vertex-Koordinaten
float[] vertices = new float[9]; // 3 Dreiecks-Eckpunkte (x,y,z)Initialisierung
Verschiedene Wege, ein float[] mit Werten zu befüllen.
// Initialisierung – 'f' Suffix PFLICHT!
float[] werte = {1.5f, 3.14f, -0.25f, 100.0f, 0.001f};
// Ohne f → double-Literal → Kompilierfehler!
// float x = 3.14; // FEHLER: possible lossy conversion
float y = 3.14f; // korrekt
float z = (float) 3.14; // auch möglich (Cast)
// 3D-Vertex-Daten für OpenGL
float[] vertex = {0.0f, 1.0f, 0.0f, // oben
-1.0f, -1.0f, 0.0f, // unten-links
1.0f, -1.0f, 0.0f}; // unten-rechtsTypische Operationen
Zugriff, Änderung, Iteration und häufige Patterns mit float[].
float[] arr = {1.5f, 3.14f, -0.25f, 100.0f, 0.001f};
// Zugriff
float pi = arr[1]; // 3.14f
// Achtung: noch weniger präzise als double!
float a = 0.1f + 0.2f; // 0.3f? → tatsächlich: 0.30000001f
// Vergleich immer mit Epsilon
float epsilon = 1e-6f;
if (Math.abs(a - 0.3f) < epsilon) { ... }
// float ↔ double Konvertierung
double d = arr[0]; // float → double (automatisch)
float f = (float) d; // double → float (expliziter Cast)
// Nützlich für Grafik-Berechnungen
float laenge = (float) Math.sqrt(arr[0] * arr[0] + arr[1] * arr[1]);
import java.util.Arrays;
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));Hintergründe & Details
float[] speichert 32-Bit-Gleitkommazahlen (IEEE 754 Single Precision) mit 7 signifikanten Dezimalstellen. Im Vergleich zu double[] belegt jedes Element nur 4 statt 8 Byte — halb so viel Speicher und Bandbreite.
Präzision ist der Haken: float hat nur ~7 Dezimalstellen Genauigkeit. 0.1f + 0.2f ergibt 0.30000001f, nicht 0.3f. Für finanzielle oder wissenschaftliche Berechnungen ist das inakzeptabel — nimm dort double[].
Wann float[] sinnvoll? Hauptsächlich in der 3D-Grafik (OpenGL, Vulkan, WebGL), Spieleentwicklung und Machine Learning. Grafik-GPUs verarbeiten float[] nativ und sind damit sehr schnell. In neuronalen Netzen werden Millionen von Gewichten als float[] gespeichert, was den Speicher- und Bandbreitenvorteil entscheidend macht.
Java Besonderheit: Alle Rechen-Operationen mit float werden intern zu double promoted. Erst das Ergebnis wird wieder auf float gerundet. Deshalb ist float-Arithmetik in Java nicht zwangsläufig schneller als double — der Vorteil liegt im Speicher.