JavaScript Math.fround() Examples [In-Depth Tutorial]


Written by - Olorunfemi Akinlua
Reviewed by - Deepak Prasad

In JavaScript, the Math.fround() method is used to return the nearest single precision float representation of a given number. Single precision float representation is a method of storing floating point numbers in a binary format that uses less space than double precision. The Math.fround() method is useful in situations where precision is not as important as storage space, such as in video and audio processing.

In this article, we will discuss briefly about float representation in JavaScript and give examples of how to use the Math.fround() method.

 

Float representation in JavaScript

JavaScript uses the IEEE 754 standard to represent floating point numbers. The standard defines two formats: single precision and double precision. Single precision uses 32 bits to represent a number, while double precision uses 64 bits. Single precision can represent a range of values from -3.4028235 × 10^38 to 3.4028235 × 10^38, with a precision of about 7 decimal digits.

 

Using the Math.fround() method in JavaScript

The Math.fround() method takes a single argument, which can be any number. It returns the nearest single precision float representation of that number. Here are a few examples:

The syntax for Math.fround() method goes thus

Math.fround(num);

where num is the number we want to approximate to the nearest single precision float representation.

Here are some quick examples of using the Math.fround() method

console.log(Math.fround(1.337));
console.log(Math.fround(1.5));
console.log(Math.fround(NaN));

Output

1.3370000123977661
1.5
NaN

In this example, we pass three numbers to the Math.fround() method. The first number, 1.337, is not a perfect binary representation, so the method returns the nearest single precision float representation of that number. The second number, 1.5, is a perfect binary representation, so the method returns the exact same number. The third number, NaN, is a special value that represents "Not a Number". When passed to the Math.fround() method, it returns NaN.

We can apply the Math.fround() method across an array of numbers.

const numbers = [1.337, 2.718, 3.141, 5.789];
const floatNumbers = numbers.map(Math.fround);
console.log(floatNumbers);

Output

[
  1.3370000123977661,
  2.7179999351501465,
  3.1410000324249268,
  5.789000034332275
]

In this example, we have an array of numbers. We use the Array.map() method to apply the Math.fround() method to each number in the array, and return an array of the single precision float representations of those numbers.

 

Example 1: Typical 32-bit representation

If we need floating-point values or decimal values in 32-bit, we can simply apply the Math.fround() method on the value.

const num1 = 45.1019;
const num2 = 672.1;

console.log(Math.fround(num1));
console.log(Math.fround(num2));

Output

45.101898193359375
672.0999755859375

In this example, Math.fround() is used to return the nearest single-precision float representation of a given number.

 

Example 2: Implementing a rounding function

Just as with other rounding methods, we can implement a special rounding function with higher precision where we define the number of rounding factors - decimal places - we want.

function sRound(num, precision) {
    const factor = Math.pow(10, precision);
    return Math.fround(Math.round(num * factor)) / factor;
}

console.log(sRound(3.14159, 2));
console.log(sRound(42.1, 1));

Output

3.14
42.1

In this example, Math.fround() is used to implement a higher precision rounding function that can round a number to a specified number of decimal places. The Math.fround() method is used to ensure that the result remains a single-precision float.

 

Example 3: Calculating square roots

Here, we can calculate the square roots using the divide and conquer approach alongside the Math.fround() method.

function squareRoot(num) {
    let guess = num / 2;
    let newGuess;
    do {
        newGuess = (guess + num / guess) / 2;
        guess = Math.fround(newGuess);
    } while (guess !== newGuess);

    return guess;
}

console.log(squareRoot(2));
console.log(squareRoot(3));
console.log(squareRoot(5));
console.log(squareRoot(4));

Output

1.5
1.75
2.25
2

The Math.fround() method is used to ensure that the intermediate guesses are single-precision floats, which can be more efficient for large calculations.

 

Example 4: Calculating the average of a large array of numbers

const numbers = Array.from({ length: 1000000 }, () => Math.random() * 100);
const average = Math.fround(
    numbers.reduce((sum, num) => sum + num, 0) / numbers.length
);
console.log(average);

Output

49.97899627685547

In this example, we create an array of 1 million random numbers between 0 and 100 using Array.from() and the Math.random() method. We then calculate the sum of the array using the Array.reduce() method and divide it by the length of the array to get the average. Finally, we use the Math.fround() method to get the single precision float representation of the average. This can be useful when working with large arrays of numbers where memory usage is a concern.

 

Example 5: Financial Calculations

Math.fround() can be used in financial calculations to round off decimal numbers to their nearest representable floating-point value. For example, if you have a float value of 0.456 and you want to round it off to its nearest representable floating-point value, you can use Math.fround().

// Given a float value of 0.456, round it off to its nearest representable floating-point value
let floatVal = 0.456;
let roundedVal = Math.fround(floatVal);
console.log(roundedVal); // Outputs 0.4560000002384186

 

Example 6: Physics Calculations

Math.fround() can be used in physics calculations that involve large or small numbers. For example, if you are calculating the speed of light and end up with a very small number that is difficult to work with, you can use Math.fround() to round it off.

// Given the speed of light is 299792458 m/s, calculate its value in miles per hour and round it off to the nearest representable floating-point value
let speedOfLightMps = 299792458;
let speedOfLightMph = (speedOfLightMps * 3600) / 1609.344;
let roundedSpeedOfLightMph = Math.fround(speedOfLightMph);
console.log(roundedSpeedOfLightMph); // Outputs 670616629.749505

 

Example 7: Using with Audio Processing

Math.fround() can be used in audio processing applications to ensure that calculations are performed at the highest possible precision. For example, if you are working with audio signals and need to ensure that the calculations are performed accurately, you can use Math.fround().

// Given an audio signal with a frequency of 100 Hz and sample rate of 44100 Hz, calculate the number of samples per period and round it off to the nearest representable floating-point value
let frequency = 100;
let sampleRate = 44100;
let samplesPerPeriod = sampleRate / frequency;
let roundedSamplesPerPeriod = Math.fround(samplesPerPeriod);
console.log(roundedSamplesPerPeriod); // Outputs 441

 

Summary

The Math.fround() method in JavaScript is used to return the nearest single precision float representation of a given number. Single precision float representation uses less space than double precision, but has lower precision. The method is useful in situations where precision is not as important as storage space, such as in video and audio processing.

 

References

Math.fround() - JavaScript | MDN (mozilla.org)
Array.prototype.reduce() - JavaScript | MDN (mozilla.org)

 

Olorunfemi Akinlua

He is boasting over five years of experience in JavaScript, specializing in technical content writing and UX design. With a keen focus on programming languages, he crafts compelling content and designs user-friendly interfaces to enhance digital experiences across various domains. You can connect with him on LinkedIn.

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can send mail to admin@golinuxcloud.com

Thank You for your support!!

Leave a Comment