Die Math.fround()
Funktion gibt die am nächsten gelegenen 32 Bit einfach genaue Repräsentation einer Number
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
var singleFloat = Math.fround(doubleFloat)
Parameter
doubleFloat
- Eine
Number
. Wenn der Parameter von einem anderen Typ ist, wird dieser zu einer Zahl konvertiert oder wenn er nicht konvertiert werden kannNaN
.
Rückgabewert
Die am nächsten gelegenen 32 Bit einfach genaue Repräsentation einer Floatingpoint-Nummer, der übergebenen Zahl.
Beschreibung
JavaScript benutzt intern 64 Bit double Gleitkommazahlen, welche eine hohe Präzision haben. Manchmal ist es gewollt mit 32 Bit Gleitkommazahlen zu arbeiten, zum Beispiel, wenn von einem von einem Float32Array
gelesen wird. Das kann verwirrend sein: Prüfen einer 64 Bit Gleitkommazahl und einer 32 Bit Gleitkommazahl auf Gleichheit kann fehlschlagen, auch wenn sie scheinbar identisch sind.
Um das zu beheben, kann Math.fround()
eingesetzt werden um 64 Bit Gleitkommazahlen in 32 Bit Gleitkommazahlen umzuwandeln. Intern wird JavaScript die Zahl als 64 Bit Gleitkommazahl benutzen, es wird jedoch ein "Runden zu geraden Zahlen" (round to even) an der 23. Stelle der Mantisse vorgenommen und alle folgenden Stellen der Mantisse auf 0
gesetzt. Wenn die Zahl außerhalb des 32 Bit Gleitkommazahlenbereiches liegt wird Infinity
oder -Infinity
zurückgegeben.
Weil fround()
eine statische Funktion von Math
ist, wird es immer als Math.
fround
()
eingesetzt, jedoch nicht als Methode eines erzeugten Math
Objektes (Math
ist kein Konstruktor).
Beispiele
Einsatz von Math.fround()
Die Zahl 1-5 kan präzise im Binärsystem dargestellt werden und ist identisch in 32 Bit und 64 Bit:
Math.fround(1.5); // 1.5 Math.fround(1.5) === 1.5 // true
Die Zahl 1.337 kan nicht präzise in Binärsystem dargestellt werden und unterscheidet 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 Gleitkommazahl, weshalb Infinity
zurückgegeben wird.
2 ** 150; // 1.42724769270596e+45 Math.fround(2 ** 150); // Infinity
Wenn der Parameter nicht zu einer Zahl konvertiert werden kann, oder keine Zahl ist (NaN), gibt Math.fround()
NaN
zurück:
Math.fround('abc'); // NaN Math.fround(NaN); // NaN
Polyfill
Diese Funktion kann emuliert werden, wenn Float32Array
verfügbar ist:
Math.fround = Math.fround || (function (array) { return function(x) { return array[0] = x, array[0]; }; })(Float32Array(1));
Spezifikationen
Spezifikation | Status | Kommentar |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Die Definition von 'Math.fround' in dieser Spezifikation. |
Standard | Initiale Definition. |
ECMAScript Latest Draft (ECMA-262) Die Definition von 'Math.fround' in dieser Spezifikation. |
Entwurf |
Browserkompatibilität
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Grundlegende Unterstützung | Chrome Vollständige Unterstützung 38 | Edge Vollständige Unterstützung Ja | Firefox Vollständige Unterstützung 26 | IE Keine Unterstützung Nein | Opera Vollständige Unterstützung 25 | Safari Vollständige Unterstützung 8 | WebView Android Vollständige Unterstützung Ja | Chrome Android Vollständige Unterstützung Ja | Edge Mobile Vollständige Unterstützung Ja | Firefox Android Vollständige Unterstützung 26 | Opera Android Vollständige Unterstützung Ja | Safari iOS Vollständige Unterstützung 8 | Samsung Internet Android Vollständige Unterstützung Ja | nodejs Vollständige Unterstützung 0.12 |
Legende
- Vollständige Unterstützung
- Vollständige Unterstützung
- Keine Unterstützung
- Keine Unterstützung