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 Math.fround() statische Methode gibt die nächstgelegene 32-Bit-Einzelpräzisions- FlieÃkommadarstellung 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-Einzelpräzisions- FlieÃkommadarstellung von doubleFloat.
Beschreibung
JavaScript verwendet intern 64-Bit-Doppelpräzisions-FlieÃkommazahlen, die eine sehr hohe Präzision bieten. Allerdings kann es manchmal vorkommen, dass Sie mit 32-Bit-FlieÃkommazahlen arbeiten, zum Beispiel wenn Sie Werte aus einem Float32Array lesen. Dies kann zu Verwirrung führen: das Ãberprüfen auf Gleichheit zwischen einer 64-Bit- und einer 32-Bit-FlieÃkommazahl kann fehlschlagen, obwohl die Zahlen scheinbar identisch sind.
Um das zu lösen, kann Math.fround() genutzt werden, um die 64-Bit-FlieÃkommazahl in eine 32-Bit-FlieÃkommazahl umzuwandeln. Intern behandelt JavaScript die Zahl weiterhin als 64-Bit-FlieÃkommazahl, es wird lediglich eine "Rundung auf gerade" an der 23. Stelle der Mantisse durchgeführt und alle folgenden Mantissen-Bits werden auf 0 gesetzt. Liegt die Zahl auÃerhalb des Bereichs einer 32-Bit-FlieÃkommazahl, 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 erstellten Math-Objekts (Math ist kein Konstruktor).
Beispiele
>Verwendung von Math.fround()
Die Zahl 1.5 kann im binären Zahlensystem exakt dargestellt werden und ist in 32-Bit und 64-Bit identisch:
Math.fround(1.5); // 1.5
Math.fround(1.5) === 1.5; // true
Allerdings kann die Zahl 1.337 im binären Zahlensystem nicht exakt dargestellt werden, daher unterscheidet sie sich in 32-Bit und 64-Bit:
Math.fround(1.337); // 1.3370000123977661
Math.fround(1.337) === 1.337; // false
ist zu groà für eine 32-Bit-FlieÃkommazahl, daher wird Infinity zurückgegeben:
2 ** 150; // 1.42724769270596e+45
Math.fround(2 ** 150); // Infinity
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-math.fround> |