Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hot to get user’s regional settings for currency in JavaScript or jQuery?

I’m trying to format some numbers with jQuery. I would like to get the user’s regional settings for currency and number, in order to implement the correct format (obtain the decimal separator).

Is it possible to retrieve these parameters with jQuery or JavaScript?

like image 994
coeurdange57 Avatar asked Nov 06 '15 07:11

coeurdange57


People also ask

What is Intl NumberFormat?

The Intl. NumberFormat object enables language-sensitive number formatting.

How do you change a value to currency format?

Tip: To quickly apply the Currency format, select the cell or range of cells that you want to format, and then press Ctrl+Shift+$. Like the Currency format, the Accounting format is used for monetary values.

What is js currency?

currency. js is a lightweight ~1kb javascript library for working with currency values. It was built to work around floating point issues in javascript. This talk by Bartek Szopka explains in detail why javascript has floating point issues.

How do you format numbers in Javascript?

JavaScript numbers can be formatted in different ways like commas, currency, etc. You can use the toFixed() method to format the number with decimal points, and the toLocaleString() method to format the number with commas and Intl. NumberFormat() method to format the number with currency.


1 Answers

Use Number.toLocaleString() with style:'currency':

(73.57).toLocaleString('de-DE',{style:'currency',currency:'EUR'}); // German: 73,57 €
(73.57).toLocaleString('en-US',{style:'currency',currency:'EUR'}); // American: €73.57

Note that:

  • This does not get regional settings, but provides output in regional settings.
  • If you want your locale to be determined dynamically, use navigator.language.
  • There are many other means aside from this native approach; for starters, take a look at accounting.js or Stack Overflow answers like this one.

As Daniel Jackson commented:

Using Intl.NumberFormat.format(), you can achieve identical results, with the NumberFormat and the general Intl objects offering versatile options and methods with a main focus on language sensitivity.

new Intl.NumberFormat('de-DE',{style:'currency',currency:'EUR'}).format(73.57); // DE: 73,57 €
new Intl.NumberFormat('en-US',{style:'currency',currency:'EUR'}).format(73.57); // US: €73.57
like image 187
dakab Avatar answered Oct 04 '22 16:10

dakab