Start · Sprachen · JavaScript · Referenz · Multiplikation (*)

Multiplikation (*)

Operator

Der Multiplikationsoperator <code>*</code> ergibt das Produkt zweier Operanden.

seit JavaScript ES1 Kategorie: syntax

Signatur

x * y

Beschreibung

Der Multiplikationsoperator * ist ein binärer arithmetischer Operator, der zwei Operanden miteinander multipliziert und ihr Produkt zurückgibt. Er folgt den üblichen mathematischen Regeln der Multiplikation und wird in der Regel für numerische Berechnungen eingesetzt.

Sind beide Operanden Zahlen (Typ number), verhält sich * wie erwartet: 3 * 4 ergibt 12. Ist einer der Operanden NaN, ist das Ergebnis ebenfalls NaN. Bei der Multiplikation mit Infinity gelten die IEEE-754-Regeln: Infinity * 0 ergibt NaN, Infinity * 2 ergibt Infinity.

JavaScript führt bei Bedarf eine implizite Typumwandlung (Type Coercion) durch: Nicht-numerische Werte werden vor der Multiplikation in den Typ number konvertiert. So ergibt "3" * 4 den Wert 12, da der String "3" automatisch zur Zahl 3 umgewandelt wird. Strings, die keine gültige Zahl darstellen, werden zu NaN konvertiert, was das Gesamtergebnis ebenfalls zu NaN macht. Für BigInt-Werte gilt: Beide Operanden müssen vom Typ bigint sein — das Mischen von number und bigint wirft einen TypeError.

Der Operator besitzt eine höhere Rangfolge (Precedence) als Addition + und Subtraktion -, aber dieselbe wie Division / und Modulo %. Er ist linksassoziativ, d. h. 2 * 3 * 4 wird als (2 * 3) * 4 ausgewertet.

Parameter

Name Typ Default Beschreibung
$x Pflicht number | bigint Der linke Operand. Nicht-numerische Werte werden implizit in number umgewandelt (außer bei bigint).
$y Pflicht number | bigint Der rechte Operand. Nicht-numerische Werte werden implizit in number umgewandelt (außer bei bigint).

Rückgabewert

Typ
number | bigint
Beschreibung
Das Produkt der beiden Operanden. Sind beide Operanden vom Typ bigint, ist der Rückgabewert ebenfalls ein bigint, andernfalls ein number.

Beispiele

Einfache Multiplikation mit Zahlen

const preis = 9.99;
const menge = 3;
const gesamt = preis * menge;
console.log(gesamt);
29.97

Implizite Typumwandlung (Type Coercion)

console.log("5" * 4);     // String → number
console.log(true * 10);   // boolean → number (true = 1)
console.log(false * 10);  // boolean → number (false = 0)
console.log(null * 7);    // null → 0
console.log("abc" * 2);  // ungültiger String → NaN
20 10 0 0 NaN

Multiplikation mit Infinity und NaN

console.log(Infinity * 2);   // positiv unendlich
console.log(Infinity * -1);  // negativ unendlich
console.log(Infinity * 0);   // unbestimmt → NaN
console.log(NaN * 99);       // NaN propagiert sich
Infinity -Infinity NaN NaN

Multiplikation mit BigInt

const a = 1000000000n;
const b = 1000000000n;
console.log(a * b);         // kein Präzisionsverlust

try {
  console.log(a * 2);       // Mischen von bigint und number
} catch (e) {
  console.error(e.message);
}
1000000000000000000n Cannot mix BigInt and other types, use explicit conversions

// Wichtig · Fallstricke

Gleitkomma-Präzision: Da JavaScript den IEEE-754-Standard für 64-Bit-Gleitkommazahlen verwendet, können bei der Multiplikation von Dezimalzahlen Rundungsfehler entstehen. Beispiel: 0.1 * 0.2 ergibt 0.020000000000000004 statt exakt 0.02. Für finanzkritische Berechnungen sollte man auf Ganzzahlen (z. B. Cent statt Euro) oder spezialisierte Bibliotheken wie decimal.js zurückgreifen.

Operator-Rangfolge: * hat Vorrang vor + und -. Zur besseren Lesbarkeit und zur Vermeidung von Fehlern empfehlen sich explizite Klammern bei gemischten Ausdrücken, z. B. (a + b) * c.

Nicht zu verwechseln mit dem Exponentierungsoperator **, der das Potenzieren übernimmt: 2 ** 10 ergibt 1024.