Matthew C.
—You want to round a number to two decimal places, at most. How do you do this?
The Math.round()
method rounds a number to the nearest integer. You can use it along with some arithmetic to round a number to a specific number of decimal places. To round a number to two decimal places at most, multiply the number by 10 to the power of 2. This moves the decimal place to the position where you want rounding to occur. Then round the number to the nearest integer using Math.round()
and divide the answer by 10 to the power of 2:
const num = 1.151; console.log(Math.round(num * 10 ** 2) / 10 ** 2); // 1.15
You may occasionally get rounding errors using this method. For example, if you round 1.005
to two decimal places, you would expect to get an answer of 1.01
:
const num = 1.005; console.log(Math.round(num * 10 ** 2) / 10 ** 2); // 1
However, the answer that you would get is 1
. This is because of floating point math and because a computer stores data in binary format. This causes the number 1.005
to be stored as 1.004999999888241291046142578125
, which causes the number to be rounded down to 1
.
Note that there is a limit to the precision with which a number with decimals can be stored. The ECMAScript standard defines a set size limit for the JavaScript Number
type.
This rounding problem can be fixed using exponential notation:
const num = 1.005; console.log(Number(`${Math.round(`${num}e2`)}e-2`)); // 1.01
If the number is already in exponential notation, you’ll need to convert it to a Number
first. You can do this using the toFixed()
method:
const num = (1.0449433327097e5).toFixed(20);
The popular Lodash utility library uses this exponential notation trick for its createRound()
function.
If you are rounding negative numbers, be careful to note that -0.5
rounds to -0
and not -1
. If the fractional portion of a number is exactly 0.5
, Math.round
rounds the number to the next integer in the direction of +∞ (positive infinity).
Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.
SEE EPISODESConsidered “not bad” by 4 million developers and more than 100,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.
Here’s a quick look at how Sentry handles your personal information (PII).
×We collect PII about people browsing our website, users of the Sentry service, prospective customers, and people who otherwise interact with us.
What if my PII is included in data sent to Sentry by a Sentry customer (e.g., someone using Sentry to monitor their app)? In this case you have to contact the Sentry customer (e.g., the maker of the app). We do not control the data that is sent to us through the Sentry service for the purposes of application monitoring.
Am I included?We may disclose your PII to the following type of recipients:
You may have the following rights related to your PII:
If you have any questions or concerns about your privacy at Sentry, please email us at compliance@sentry.io.
If you are a California resident, see our Supplemental notice.