This is a short guide on how to round a number to 2 decimal places using JavaScript. In the example below, I also will provide a JavaScript alternative to PHP’s number_format function.
Take a look at the custom JavaScript function below:
/** * Custom JavaScript function that rounds a number w/ * decimal places. * * @param val - The value that you want to format with decimal places. * @param decimals - The number of decimal places that should be used. * @returns {float} */ function number_format(val, decimals){ //Parse the value as a float value val = parseFloat(val); //Format the value w/ the specified number //of decimal places and return it. return val.toFixed(decimals); }
I named this function number_format because that is the name of a popular PHP function that carries out a similar operation.
Our custom function takes in two parameters:
- val: The number that we want to round.
- decimals: The number of decimals that the number should be rounded to.
Inside our function, we parsed the val variable as a float by using JavaScript’s parseFloat function. We did this so that our function can also handle string variables. If you fail to parse a string variable before using the toFixed() method, your code will throw the following Uncaught TypeError:
Uncaught TypeError: val.toFixed is not a function
This is because the Number.prototype.toFixed() method can only be used with Number variables such as floats and integers.
Note that unlike PHP’s number_format function, this function does not add thousand separators.
You can test this function out by using the following examples:
console.log(number_format(2.333, 2)); //Result: 2.33 console.log(number_format("9.01345", 2)); //Result: 9.01 console.log(number_format(5, 2)); //Result: 5.00 console.log(number_format("383.48910093", 4)); //Result: 383.4891 console.log(number_format(33.92039, 1)); //Result: 33.9
As you can see, this function can handle both numbers and strings:
- We were able to round the float 2.333 to 2 decimal places.
- The string “9.01345” was rounded to 9.01.
- An integer such as 5 will become “5.00”, with two zeros being appended behind the decimal place.
- For “383.48910093”, we changed the second parameter to 4. This rounded the number to 4 decimal places, resulting in 383.4891.
- Finally, we rounded 33.92039 to 1 decimal place, resulting in 33.9.
Hopefully, you found the code above useful!