## Rounding numbers in JavaScript

### Introduction

JavaScript’s Math object makes available a method for rounding to whole numbers. This helps place Rounding numbers in JavaScript with the following method:

Math.round(x)

From the time when Math. round() will only round a floating-point value to the nearby integer value. We may use that to our benefit to achieve the task of rounding to a certain number of decimal places.

### How to generate random numbers?

Assume we want to simulate the throw of a die. We want it to randomly come up 1, 2, 3, 4, 5, or 6 in the simulation. The first step is to inquire JavaScript to generate a random number. It’s nearly random because technically known as pseudo-random. It’s close enough to random for the greatest purposes.

The following code makes a pseudo-random number, using 16 decimal places. This code is ranging from 0.0000000000000000 through 0.9999999999999999 and assigns it to the variable randomNumber.

var randomNumber = Math.random();

The function at all times brings a 16-place decimal that ranges from 0.0000000000000000 to 0.9999999999999999. We may convert the decimal to an integer by multiplying with one hundred quadrillion:

- 0000000000000000 * 100000000000000000 = 0

- 7474887706339359 * 100000000000000000 = 7474887706339359

- 9999999999999999 * 100000000000000000 = 9999999999999999

- 0000000000000000 * 6 = 0

- 7474887706339359 * 6 = 4.7474887706339359

- 9999999999999999 * 6 = 5.9999999999999994

- var bigDecimal = Math.random();

- var improvedNum = (bigDecimal * 6) + 1;

- var numberOfStars = Math.floor(improvedNum);

- Makes a 16-place decimal. It assigns to the variable bigDecimal.

- Changes the 16-place decimal to a number within the range from 0.0000000000000000 over 5.9999999999999999, and then adds 1; hence the range winds up 1.0000000000000000 over 6.9999999999999999. This number is allocated to the variable improvedNum.

- Circles the value denoted by improvedNum down to the nearby integer, which ranges from 1 through 6. Trillions of likely numbers are more than we want in our virtual die throw. We need six imaginable numbers, 1 from side to side 6. Therefore as an alternative to multiplying by a hundred quadrillion, we will first multiply the huge decimal by 6.

Perception may tell us that we may finish the job by rounding. However, that doesn’t work out mathematically. Since nil rounds up to 0 and nothing rounds down to 6. The numbers in the middle that are reached both by rounding up and rounding down would come up nearly twice as frequently. Then we can provide all the numbers an equivalent chance if we add 1 to the result, formerly round down. At this time’s the code for our simulated die throws would be as follows;

This is what takes place in the above code line by line;

### Rounding negative numbers

We should moreover be alerting that negative numbers round another way than positive numbers in JavaScript. The docs for Math. round () clarify it in a better way as;

The argument is rounded to the integer by the next higher absolute value if the fractional portion of the argument is greater than 0.5. The argument is rounded to the integer by the lower absolute value if it is less than 0.5. The argument is rounded to the afterward integer in the direction of +∞ if the fractional portion is exactly 0.5.

We just want to be aware of JavaScript’s inherent floating-point rounding errors that are typically not too thoughtful. We can avoid rounding errors entirely by using exponential notation when rounding.