A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Math/sumPrecise below:

Math.sumPrecise() - JavaScript | MDN

Math.sumPrecise()

Limited availability

Die statische Methode Math.sumPrecise() nimmt ein Iterable von Zahlen an und gibt deren Summe zurück. Sie ist genauer als das Aufsummieren in einer Schleife, da sie den Verlust an Genauigkeit bei Gleitkommazahlen in Zwischenergebnissen vermeidet.

Probieren Sie es aus
console.log(Math.sumPrecise([1, 2]));
// Expected output: 3

console.log(Math.sumPrecise([1e20, 0.1, -1e20]));
// Expected output: 0.1
Syntax Parameter
numbers

Ein Iterable (wie ein Array) von Zahlen.

Rückgabewert

Eine Zahl, die die Summe der Zahlen im numbers Iterable ist. Wenn das Iterable leer ist, ist der Rückgabewert -0 (nicht 0).

Ausnahmen
TypeError

Wenn numbers kein Iterable ist oder wenn eine der Zahlen im Iterable nicht vom Typ Zahl ist.

Beschreibung

Da sumPrecise() eine statische Methode von Math ist, verwenden Sie sie immer als Math.sumPrecise() und nicht als Methode eines von Ihnen erstellten Math-Objekts (Math ist kein Konstruktor).

Die Methode wird Math.sumPrecise() genannt, weil sie genauer ist als das naive Aufsummieren von Zahlen in einer Schleife. Betrachten Sie das folgende Beispiel:

let sum = 0;
const numbers = [1e20, 0.1, -1e20];
for (const number of numbers) {
  sum += number;
}
console.log(sum); // 0

Das Ergebnis ist 0. Dies liegt daran, dass 1e20 + 0.1 nicht präzise in 64-Bit-Gleitkommazahlen dargestellt werden kann und daher das Zwischenergebnis auf 1e20 gerundet wird. Dann ist die Summe von 1e20 und -1e20 0, sodass das Endergebnis 0 ist.

Math.sumPrecise() umgeht dieses Problem, indem ein spezieller Summierungsalgorithmus verwendet wird. Es funktioniert so, als ob die Gleitkommazahlen unter Verwendung ihrer exakten mathematischen Werte aufaddiert werden, und das Endergebnis wird dann in die nächstliegende darstellbare 64-Bit-Fließkommazahl umgewandelt. Dies kann dennoch das 0.1 + 0.2-Präzisionsproblem nicht vermeiden:

console.log(Math.sumPrecise([0.1, 0.2])); // 0.30000000000000004

Da die Gleitkommaliterale 0.1 und 0.2 bereits mathematische Werte darstellen, die größer als 0.1 und 0.2 sind, und die nächstliegende 64-Bit-Gleitkommadarstellung ihrer Summe tatsächlich 0.30000000000000004 ist.

Beispiele Verwendung von Math.sumPrecise()
console.log(Math.sumPrecise([1, 2, 3])); // 6
console.log(Math.sumPrecise([1e20, 0.1, -1e20])); // 0.1
Spezifikationen Browser-Kompatibilität Siehe auch

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4