Math.fround()

Статичний метод Math.fround() повертає найближчий відповідник числу в форматі 32-бітного числа з рухомою комою одинарної точності.

Спробуйте його в дії

Синтаксис

Math.fround(doubleFloat)

Параметри

doubleFloat

Число.

Повернене значення

Найближчий відповідник x, у форматі 32-бітного числа з рухомою комою одинарної точності.

Опис

JavaScript всередині використовує 64-бітні числа з рухомою комою подвійної точності, які, як це видно з назви, мають дуже високу точність. Однак, інколи може виникнути необхідність попрацювати з 32-бітними числами з рухомою комою — наприклад, під час читання значень із Float32Array. Це може призвести до плутанини: порівняння 64-бітних чисел із 32-бітними може не спрацювати, навіть якщо самі числа мають ідентичний вигляд.

Для розв'язання цієї проблеми можна застосувати Math.fround() для переведення 64-бітних чисел з рухомою комою в 32-бітні. JavaScript всередині продовжить сприймати числа як 64-бітні, лишень виконає "округлення до найближчого парного" на 23-му біті мантиси, і встановить всі наступні біти мантиси в 0. Якщо число знаходиться за межами діапазону 32-бітних чисел з рухомою комою, то в результаті буде повернено Infinity чи -Infinity.

Оскільки fround() — це статичний метод об'єкта Math, його потрібно завжди використовувати через Math.fround(). Не слід звертатись до нього як до методу власноруч створеного екземпляра Math (Math не є конструктором).

Приклади

Застосування Math.fround()

Число 1.5 можна точно відобразити у двійковій системі числення, і ці відображення однакові як для 32-бітного формату, так і для 64-бітного:

Math.fround(1.5); // 1.5
Math.fround(1.5) === 1.5; // true

Однак, число 1.337 не можна точно відобразити у двійковій системі числення, тому його 32-бітне і 64-бітне відображення будуть відрізнятись:

Math.fround(1.337); // 1.3370000123977661
Math.fround(1.337) === 1.337; // false

Число 21502^150 — завелике для 32-бітного числа з рухомою комою, тому буде повернено Infinity:

2 ** 150; // 1.42724769270596e+45
Math.fround(2 ** 150); // Infinity

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
fround
Chrome Full support 38
Edge Full support 12
Firefox Full support 26
Internet Explorer No support No
Opera Full support 25
Safari Full support 8
WebView Android Full support 38
Chrome Android Full support 38
Firefox for Android Full support 26
Opera Android Full support 25
Safari on iOS Full support 8
Samsung Internet Full support 3.0
Deno Full support 1.0
Node.js Full support 0.12.0

Дивіться також