3
var randomNumber = (Math.random()*3 + 3.5); randomNumber;

alert(randomNumber)

This piece of code returns a number like

4.589729345235789

I need it to return

4.5

So need it to remove all the numbers after the decimal except the first one, can anyone show me how to do that?

Matt
  • 173
  • 1
  • 13

2 Answers2

5

You use Number.prototype.toPrecision() with parameter 2, Number.prototype.toFixed() with parameter 1.

+randomNumber.toPrecision(2);

Alternatively, you can use String.prototype.slice() with parameters 0, 3

+String(randomNumber).slice(0, 3);
guest271314
  • 1
  • 15
  • 104
  • 177
3

If you need to set the amount of decimal places in a number, you can use toFixed(X), where X is the amount of decimal places you want to have.

For example,

4.589729345235789.toFixed(1); would result in 4.6.

Keep in mind, this will convert the number into a string.

If you need absolute accuracy and 4.6 is not good enough for you, see this Stackoverflow post, which has this as a more "accurate" method for your case:

var with2Decimals = num.toString().match(/^-?\d+(?:\.\d{0,2})?/)[0]

Notice the {0,2} inside of that, which is the range. You can change it to {0,1} in your case.

Community
  • 1
  • 1
Edwin Finch
  • 913
  • 3
  • 10
  • 24