ma11hew28
ma11hew28

Reputation: 126327

Format a number to two decimal places

Give me a native (no jQuery, Prototype, etc. please) JavaScript function that converts numbers as follows:

input:  0.39, 2.5,  4.25, 5.5,  6.75, 7.75, 8.5
output: 0.39, 2.50, 4.25, 5.50, 6.75, 7.75, 8.50

E.g., in Ruby, I'd do something like this:

>> sprintf("%.2f", 2.5)
=> "2.50"

The output may be a number or a string. I don't really care because I'm just using it to set innerHTML.

Thank you.

Upvotes: 18

Views: 29302

Answers (4)

Eric Fortis
Eric Fortis

Reputation: 17350

input = 0.3;
output = input.toFixed(2);
// output: 0.30

A newer option, which supports rounding:

new Intl.NumberFormat('en-US', {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
}).format(1.005)
// Outputs: 1.01

Upvotes: 33

StangSpree
StangSpree

Reputation: 439

Alternatively you can use Intl.NumberFormat() with { style: 'percent'}

var num = 25;

var option = {
  style: 'percent'

};
var formatter = new Intl.NumberFormat("en-US", option);
var percentFormat = formatter.format(num / 100);
console.log(percentFormat);

Upvotes: 1

Jacob Relkin
Jacob Relkin

Reputation: 163238

You can use the toFixed() method on Number objects:

var array = [0.39, 2.5,  4.25, 5.5,  6.75, 7.75, 8.5], new_array = [];
for(var i = 0, j = array.length; i < j; i++) {
    if(typeof array[i] !== 'number') continue;
    new_array.push(array[i].toFixed(2));
}

Upvotes: 9

Jacob
Jacob

Reputation: 78840

Use toFixed with 2 as the number of decimal places.

Upvotes: 4

Related Questions