Math.fround()
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна в браузерах с июля 2015 года.
Статический метод Math.fround() возвращает ближайшее представление числа с плавающей запятой 32-битной одинарной точности.
Попробуйте
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
Синтаксис
Math.fround(doubleFloat)
Параметры
-
doubleFloat - Число.
Возвращаемое значение
Ближайшее представление числа с плавающей запятой 32-битной одинарной точности для doubleFloat.
Описание
JavaScript внутренне использует 64-битные числа с плавающей запятой двойной точности, которые обеспечивают очень высокую точность. Однако иногда вам может потребоваться работать с 32-битными числами с плавающей запятой, например, при чтении значений из Float32Array. Это может вызвать путаницу: проверка 64-битного и 32-битного чисел с плавающей запятой на равенство может завершиться неудачей, даже если числа кажутся идентичными.
Чтобы решить эту проблему, Math.fround() можно использовать для приведения 64-битного числа с плавающей запятой к 32-битному. Внутренне JavaScript продолжает рассматривать число как 64-битное число с плавающей запятой, просто выполняет «округление до ближайшего четного» (round to even) на 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
слишком велико для 32-битного числа с плавающей запятой, поэтому возвращается Infinity:
2 ** 150; // 1.42724769270596e+45 Math.fround(2 ** 150); // Infinity
Спецификации
| Спецификация |
|---|
| Спецификация языка ECMAScript® 2027 # sec-math.fround |
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
fround |
38 |
12 |
26 |
25 |
8 |
38 |
26 |
25 |
8 |
3.0 |
38 |
8 |
1.0.0 |
1.0 |
0.12.0 |
Смотрите также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround