Переклад не закінчено. Будь ласка, допоможіть перекласти цю статтю з англійської.

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

Синтаксис

var singleFloat = Math.fround(doubleFloat);

Аргументи

doubleFloat
Number. Якщо даний аргумент має інший тип - він буде приведений до числа, або до NaN у випадку, якщо таке приведення неможливе.

Результат

Зображеня аргументу у вигляді найближчого 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

Якщо аргумент не може бути приведеним до числа, чи просто являється not-a-number (NaN), Math.fround() поверне NaN:

Math.fround('abc'); // NaN
Math.fround(NaN); // NaN

Поліфіл

Даний функціонал можна відтворити за допомогою наступної функції (за умови наявної підтримки Float32Array):

Math.fround = Math.fround || (function (array) {
  return function(x) {
    return array[0] = x, array[0];
  };
})(new Float32Array(1));

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

Специфікація Статус документу Примітка
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Math.fround' in that specification.
Standard Первинне визначення.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Math.fround' in that specification.
Draft  

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

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support38 Yes26 No258
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes26 Yes8 Yes

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

Мітки документа й учасники

Зробили внесок у цю сторінку: AdriandeCita
Востаннє оновлена: AdriandeCita,