Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Math.fround()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Die statische Methode Math.fround() gibt die nächstgelegene 32-Bit-Gleitkommadarstellung mit einfacher Genauigkeit einer Zahl zurück.
Probieren Sie es aus
console.log(Math.fround(5.5));
// Expected output: 5.5
console.log(Math.fround(5.05));
// Expected output: 5.050000190734863
console.log(Math.fround(5));
// Expected output: 5
console.log(Math.fround(-5.05));
// Expected output: -5.050000190734863
Syntax
Math.fround(doubleFloat)
Parameter
doubleFloat-
Eine Zahl.
Rückgabewert
Die nächstgelegene 32-Bit-Gleitkommadarstellung mit einfacher Genauigkeit von doubleFloat.
Beschreibung
JavaScript verwendet intern 64-Bit-Gleitkommazahlen mit doppelter Genauigkeit, die eine sehr hohe Präzision bieten. Manchmal arbeiten Sie jedoch mit 32-Bit-Gleitkommazahlen, beispielsweise wenn Sie Werte aus einem Float32Array lesen. Das kann zu Verwirrung führen: Ein Vergleich einer 64-Bit- und einer 32-Bit-Gleitkommazahl auf Gleichheit kann fehlschlagen, obwohl die Zahlen scheinbar identisch sind.
Um dieses Problem zu lösen, können Sie mit Math.fround() eine 64-Bit-Gleitkommazahl in eine 32-Bit-Gleitkommazahl umwandeln. Intern behandelt JavaScript die Zahl weiterhin als 64-Bit-Gleitkommazahl. Es rundet lediglich am 23. Bit der Mantisse nach der Regel „zur nächsten geraden Zahl“ und setzt alle folgenden Mantissenbits auf 0. Liegt die Zahl außerhalb des Wertebereichs einer 32-Bit-Gleitkommazahl, wird Infinity oder -Infinity zurückgegeben.
Da fround() eine statische Methode von Math ist, verwenden Sie sie immer als Math.fround() und nicht als Methode eines selbst erstellten Math-Objekts (Math ist kein Konstruktor).
Beispiele
>Math.fround() verwenden
Die Zahl 1,5 lässt sich im Binärsystem exakt darstellen und ist in der 32-Bit- und der 64-Bit-Darstellung identisch:
Math.fround(1.5); // 1.5
Math.fround(1.5) === 1.5; // true
Die Zahl 1,337 lässt sich dagegen im Binärsystem nicht exakt darstellen. Daher unterscheidet sich ihre 32-Bit-Darstellung von ihrer 64-Bit-Darstellung:
Math.fround(1.337); // 1.3370000123977661
Math.fround(1.337) === 1.337; // false
ist für eine 32-Bit-Gleitkommazahl zu groß. Daher wird Infinity zurückgegeben:
2 ** 150; // 1.42724769270596e+45
Math.fround(2 ** 150); // Infinity
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-math.fround> |
