Start · Sprachen · JavaScript · Referenz · Float64Array

Float64Array

Klasse

Typisiertes Array für 64-Bit-Gleitkommazahlen (IEEE 754 double precision) in plattformspezifischer Byte-Reihenfolge.

seit JavaScript ES2015 Kategorie: core

Signatur

class Float64Array extends TypedArray

Beschreibung

Float64Array ist ein typisiertes Array (TypedArray), das eine Folge von 64-Bit-Gleitkommazahlen (entsprechend dem C-Typ double bzw. dem IEEE-754-Standard für doppelte Genauigkeit) im Speicher ablegt. Jedes Element belegt exakt 8 Byte. Die Byte-Reihenfolge richtet sich nach der Plattform (in der Praxis fast immer Little-Endian auf x86/x64-Systemen).

Float64Array eignet sich überall dort, wo maximale Gleitkomma-Präzision benötigt wird – zum Beispiel für wissenschaftliche Berechnungen, Signalverarbeitung, 3-D-Grafik mit hoher Genauigkeit oder die Verarbeitung von Koordinaten-Datensätzen. Gegenüber normalen JavaScript-Arrays bietet es einen deutlich geringeren Speicher-Overhead und ermöglicht durch den festen Typ effizientere CPU-nahe Operationen.

Wie alle TypedArrays teilt Float64Array einen zugrunde liegenden ArrayBuffer. Mehrere TypedArray-Views können denselben Buffer referenzieren, was Zero-Copy-Datenübergaben – etwa an WebGL, Web Audio oder Worker.postMessage() – ermöglicht. Die Klasse erbt alle Methoden von %TypedArray%.prototype (z. B. map, filter, reduce, set, subarray).

Beim Schreiben von Werten, die außerhalb des darstellbaren Bereichs liegen, speichert Float64Array Infinity, -Infinity oder NaN, wie es der IEEE-754-Standard vorschreibt. Integer-Werte bis 253−1 werden verlustfrei gespeichert; für noch größere ganze Zahlen ist BigInt64Array die bessere Wahl.

Parameter

Name Typ Default Beschreibung
$length number Anzahl der Elemente (nicht Bytes). Erstellt einen neuen, mit Nullen initialisierten Buffer der Größe length × 8 Byte.
$typedArray TypedArray Ein anderes typisiertes Array, dessen Werte kopiert und in float64 konvertiert werden.
$object Array|Iterable Ein Array-ähnliches oder iterierbares Objekt; dessen Elemente werden in float64 konvertiert und kopiert.
$buffer ArrayBuffer|SharedArrayBuffer Ein existierender Puffer, der als Backing-Store verwendet wird. Optionale Parameter byteOffset und length steuern den sichtbaren Ausschnitt.
$byteOffset number 0 Byte-Offset innerhalb des übergebenen buffer, ab dem die View beginnt. Muss ein Vielfaches von 8 sein.
$length number Anzahl der Elemente der View innerhalb des übergebenen buffer (ab byteOffset).

Rückgabewert

Typ
Float64Array
Beschreibung
Eine neue Float64Array-Instanz, die auf einen ArrayBuffer zeigt und die angeforderten 64-Bit-Gleitkommazahlen enthält.

Beispiele

Grundlegende Verwendung: Erstellen und Befüllen

// Array mit 4 Elementen, alle initial 0
const arr = new Float64Array(4);
arr[0] = 3.141592653589793;
arr[1] = 2.718281828459045;
arr[2] = 1.4142135623730951;
arr[3] = -Infinity;

console.log(arr[0]);       // 3.141592653589793
console.log(arr.byteLength); // 32 (4 × 8 Byte)
console.log(arr.length);     // 4
console.log([...arr]);
3.141592653589793 32 4 [ 3.141592653589793, 2.718281828459045, 1.4142135623730951, -Infinity ]

Aus bestehendem Array erstellen und mit TypedArray-Methoden arbeiten

const rohdaten = [1.1, 2.2, 3.3, 4.4, 5.5];
const f64 = new Float64Array(rohdaten);

// Summe per reduce
const summe = f64.reduce((acc, val) => acc + val, 0);
console.log('Summe:', summe);

// Jeden Wert quadrieren
const quadriert = f64.map(x => x ** 2);
console.log('Quadriert:', [...quadriert]);

// Subarray-View (kein Kopieren)
const mitte = f64.subarray(1, 4);
console.log('Mitte:', [...mitte]);
Summe: 16.5 Quadriert: [ 1.2100000000000002, 4.840000000000001, 10.889999999999999, 19.360000000000003, 30.25 ] Mitte: [ 2.2, 3.3, 4.4 ]

Geteilter ArrayBuffer zwischen mehreren Views

// Einen Buffer für 3 float64-Werte anlegen
const buffer = new ArrayBuffer(24); // 3 × 8 Byte
const view1 = new Float64Array(buffer);
const view2 = new Float64Array(buffer, 8, 2); // ab Byte 8, 2 Elemente

view1[0] = 100.0;
view1[1] = 200.0;
view1[2] = 300.0;

// view2 zeigt auf dieselben Bytes wie view1[1] und view1[2]
console.log([...view2]); // [ 200, 300 ]

// Schreiben über view2 ändert auch view1
view2[0] = 999.9;
console.log(view1[1]); // 999.9
[ 200, 300 ] 999.9

// Wichtig · Fallstricke

Byte-Reihenfolge: Float64Array verwendet stets die native Byte-Reihenfolge der Plattform. Für portable Binärdaten (z. B. Netzwerkprotokolle) sollte stattdessen DataView mit expliziten getFloat64/setFloat64-Aufrufen verwendet werden, die Little- oder Big-Endian erzwingen können.

Präzision: Float64Array entspricht dem normalen JavaScript-Typ number (IEEE 754 double). Im Gegensatz dazu rundet Float32Array auf 32 Bit – das spart Speicher, reduziert aber die Genauigkeit erheblich.

Kein Sparse Array: Nicht zugewiesene Elemente sind immer 0, nicht undefined. TypedArrays können weder Löcher noch nicht-numerische Schlüssel enthalten.

Transfer zu Web Workern: Ein zugrunde liegender ArrayBuffer kann per postMessage transferiert (nicht kopiert) werden, was ihn im ursprünglichen Kontext unzugänglich macht (detached). Zugriff danach wirft einen TypeError.