Kenziiee Flavius
Kenziiee Flavius

Reputation: 1949

Javascript: using toLocaleString + Tofixed

I need to format a number for a project im working on at work, only problem is that I cant format it how i want.

I convert the number to a localestring using the toLocaleString method which gives me the commas but i also need decimal places, nothing i seem to do works.

var number = 123.322
number = parseFloat(number).toFixed(2) //123.22
number.toLocaleString() //123.22

The above code just returns the parsefloated number along with the tofixed decimal values but it doesn't add the commas.

How do i get a number to have two decimal places (when the value is 'xx.00') and also be comma separated. Is this possible in JavaScript?

Upvotes: 25

Views: 21205

Answers (6)

Esteban Pérez
Esteban Pérez

Reputation: 11

Yes, it is possible using .toLocaleString, yo just need to specify the language, optionally you can specify decimals and currency. look at this example:

35000.2455.toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2,style: 'currency', currency: 'USD' })

this returns $35,000.25

Upvotes: 1

Alien426
Alien426

Reputation: 1257

You can give an object to .toLocaleString() which describes what you want:

var sNumber = (10123.322).toLocaleString(undefined,
 {'minimumFractionDigits':2,'maximumFractionDigits':2});

Documentation: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

Original:

const fNumber = 10123.322;
const sNumber = parseFloat(fNumber.toFixed(2)).toLocaleString();
console.log(sNumber);

The number is already in decimal/float format on the first line.

  • .toFixed(2) turns it into a string using fixed-point notation.
  • parseFloat() takes that string and turns it back into a float.
  • .toLocaleString() turns it into a string using the local format.

Upvotes: 58

Amey Vartak
Amey Vartak

Reputation: 329

Just to do it in one line

var num = '12233.3366554';
num = parseFloat(parseFloat(num).toFixed(2)).toLocaleString('en-IN', { useGrouping: true });

Upvotes: 1

Saravana
Saravana

Reputation: 1

toLocaleString function provide number representation based on languages

 var number = 3500.00;

if(Number.isInteger(number)){

   var zeroappend= number.toLocaleString()+".00";
   console.log(zeroappend);//3,500.00;


}else{
   console.log(number.toLocaleString()); 
}

Upvotes: 0

bhanu.cs
bhanu.cs

Reputation: 1365

In order to get commas you have to specify the locale .The locale en includes commas for the numbers. toFixed() Returns a string. toLocaleString() function commas works on a number not on a string.So parse the string to float.

var number = 1234567.322;
number = parseFloat(parseFloat(number).toFixed(2)).toFixed(2) ;
number=number.toLocaleString('en'); 

Upvotes: 0

adeneo
adeneo

Reputation: 318182

Number.toLocaleString works on a number, but toFixed returns a string.

Coerce the string back into a number first

var number = 123.322;
var string = parseFloat(number).toFixed(2);
var parsed = (+string).toLocaleString();

console.log(parsed);

Upvotes: 0

Related Questions