Use the toFixed() method to round a number to 2 decimal places, e.g. const result = num. toFixed(2) . The toFixed method will round and format the number to 2 decimal places.
The Math. round() function in JavaScript is used to round the number passed as parameter to its nearest integer. Parameters : The number to be rounded to its nearest integer.
In TypeScript, the floor() method of the Math object is the opposite of the ceil method. It used to round a number downwards to the nearest integer. It returns the largest integer less than or equal to a number.
Using Math.floor()
is one way of doing this.
More information: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
Round towards negative infinity - Math.floor()
+3.5 => +3.0
-3.5 => -4.0
Round towards zero can be done using Math.trunc()
. Older browsers do not support this function. If you need to support these, you can use Math.ceil()
for negative numbers and Math.floor()
for positive numbers.
+3.5 => +3.0 using Math.floor()
-3.5 => -3.0 using Math.ceil()
Math.floor()
will work, but it's very slow compared to using a bitwise OR
operation:
var rounded = 34.923 | 0;
alert( rounded );
//alerts "34"
EDIT Math.floor()
is not slower than using the | operator. Thanks to Jason S for checking my work.
Here's the code I used to test:
var a = [];
var time = new Date().getTime();
for( i = 0; i < 100000; i++ ) {
//a.push( Math.random() * 100000 | 0 );
a.push( Math.floor( Math.random() * 100000 ) );
}
var elapsed = new Date().getTime() - time;
alert( "elapsed time: " + elapsed );
You can try to use this function if you need to round down to a specific number of decimal places
function roundDown(number, decimals) {
decimals = decimals || 0;
return ( Math.floor( number * Math.pow(10, decimals) ) / Math.pow(10, decimals) );
}
examples
alert(roundDown(999.999999)); // 999
alert(roundDown(999.999999, 3)); // 999.999
alert(roundDown(999.999999, -1)); // 990
Rounding a number
towards 0
(aka "truncating its fractional part") can be done by subtracting its signed fractional part number % 1
:
rounded = number - number % 1;
Like Math.floor
(rounds towards -Infinity
) this method is perfectly accurate.
There are differences in the handling of -0
, +Infinity
and -Infinity
though:
Math.floor(-0) => -0
-0 - -0 % 1 => +0
Math.floor(Infinity) => Infinity
Infinity - Infinity % 1 => NaN
Math.floor(-Infinity) => -Infinity
-Infinity - -Infinity % 1 => NaN
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With