Spec-Zone.ru › JavaScript

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
21502^150

слишком велико для 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

Смотрите также

  • Полифил Math.fround в core-js
  • Полифил es-shims для Math.fround
  • Math.round()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API