--- title: Math.fround() slug: Web/JavaScript/Reference/Global_Objects/Math/fround tags: - JavaScript - Math - fround - Довідка - метод translation_of: Web/JavaScript/Reference/Global_Objects/Math/fround ---
Функція Math.fround() повертає найближче зображення числового аргументу у вигляді 32-бітного числа з рухомою комою {{interwiki("wikipedia", "Число_одинарної_точності","одинарної точності" )}}.
Джерело цих інтерактивних прикладів зберігається у репозиторії на GitHub. Якщо ви маєте бажання зробити свій внесок у проект інтерактивних прикладів - будь ласка, зклонуйте репозиторій https://github.com/mdn/interactive-examples та пришліть нам pull request.
var singleFloat = Math.fround(doubleFloat);
doubleFloatЗображеня аргументу у вигляді найближчого 32-бітного числа з рухомою комою {{interwiki("wikipedia", "Число_одинарної_точності","одинарної точності" )}}.
JavaScript всередині використовує 64-бітні числа із рухомою комою подвійної точності. Це забезпечує дуже високу точність обчислень. Однак, інколи у вас може виникнути потреба працювати із 32-бітними числами того ж типу. Зокрема, якщо ви читаєте дані із {{jsxref("Float32Array")}}. Це може викликати певну плутанину: перевірка рівності 64-бітного та 32-бітного чисел може дати негативний результат, навіть якщо числа здаються однаковими.
Щоб вирішити цю проблему, можна застосувати Math.fround() для перетворення 64-бітного числа у 32-бітне. JavaScript всередині продовжить вважати числа за 64-бітні, натомість виконуючи "округлення до найближчого парного" на 23-му біті мантиси, і встановлююючи наступний за нею біт в 0. Якщо число виходить за межі 32-бітного із рухомою комою, то в результаті буде отримана {{jsxref("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
- занадто велике для 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
Даний функціонал можна відтворити за допомогою наступної функції (за умови наявної підтримки {{jsxref("Float32Array")}}):
Math.fround = Math.fround || (function (array) {
return function(x) {
return array[0] = x, array[0];
};
})(new Float32Array(1));
| Специфікація | Статус документу | Примітка |
|---|---|---|
| {{SpecName('ES6', '#sec-math.fround', 'Math.fround')}} | {{Spec2('ES6')}} | Первинне визначення. |
| {{SpecName('ESDraft', '#sec-math.fround', 'Math.fround')}} | {{Spec2('ESDraft')}} |
Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій https://github.com/mdn/browser-compat-data, надішліть нам свій pull request.
{{Compat("javascript.builtins.Math.fround")}}