Math.fround()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
TheMath.fround() static method returns the nearest32-bit single precision float representation of a number.
In this article
Try it
console.log(Math.fround(5.5));// Expected output: 5.5console.log(Math.fround(5.05));// Expected output: 5.050000190734863console.log(Math.fround(5));// Expected output: 5console.log(Math.fround(-5.05));// Expected output: -5.050000190734863Syntax
Math.fround(doubleFloat)Parameters
doubleFloatA number.
Return value
The nearest32-bit single precision float representation ofdoubleFloat.
Description
JavaScript uses 64-bit double floating-point numbers internally, which offer a very high precision. However, sometimes you may be working with 32-bit floating-point numbers, for example if you are reading values from aFloat32Array. This can create confusion: checking a 64-bit float and a 32-bit float for equality may fail even though the numbers are seemingly identical.
To solve this,Math.fround() can be used to cast the 64-bit float to a 32-bit float. Internally, JavaScript continues to treat the number as a 64-bit float, it just performs a "round to even" on the 23rd bit of the mantissa, and sets all following mantissa bits to0. If the number is outside the range of a 32-bit float,Infinity or-Infinity is returned.
Becausefround() is a static method ofMath, you always use it asMath.fround(), rather than as a method of aMath object you created (Math is not a constructor).
Examples
>Using Math.fround()
The number 1.5 can be precisely represented in the binary numeral system, and is identical in 32-bit and 64-bit:
Math.fround(1.5); // 1.5Math.fround(1.5) === 1.5; // trueHowever, the number 1.337 cannot be precisely represented in the binary numeral system, so it differs in 32-bit and 64-bit:
Math.fround(1.337); // 1.3370000123977661Math.fround(1.337) === 1.337; // false is too big for a 32-bit float, soInfinity is returned:
2 ** 150; // 1.42724769270596e+45Math.fround(2 ** 150); // InfinitySpecifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-math.fround> |