Use Intl.NumberFormat() to convert currency, units, notation, and other numeric values 374 words.
Last Updated
The Intl.NumberFormat() object enables language-sensitive number formatting. We can use this to convert currency, numbers, percentages, units, and other notation into formatted strings. This is particularly useful in eCommerce applications, with examples like displaying an item price or recipt printing. Another example are social platforms like YouTube, which use compact notation to display high counts of views and followers.
Currency formatting
📚 You can reference currency codes here and locale values here
Number to $USD
const convertToUSD = (someNumber) => {
return new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
}).format(someNumber);
};
// Get dollas in english 🇺🇸
convertToUSD(12.99); // "$12.99"
Number to EURO €
const inEuroUmrechnen = (eineZahl) => {
return new Intl.NumberFormat("de-DE", {
style: "currency",
currency: "EUR",
}).format(eineZahl);
};
// Holen sie sich Euro in deutsche 🇩🇪
inEuroUmrechnen(39.99); // "39,99 €"
Compact notation
const subscriberCount = (subscribers) => {
return new Intl.NumberFormat("en-US", {
notation: "compact",
compactDisplay: "short"
}).format(subscribers);
};
// 📼 Current Fireship subscribers
subscriberCount(711000); // "711K"
// 🔥 Fireship subscriber goal for 2021
subscriberCount(1000000); // "1M"
Unit conversion
const convertToGigabytes = (megabytes) => {
return new Intl.NumberFormat("en-US", {
style: "unit",
unit: "gigabyte",
maximumSignificantDigits: 4,
unitDisplay: "narrow"
}).format(megabytes / 1000);
};
// 💾 Convert MB value to GB:
convertToGigabytes(77778); // "77.78GB"
🔥 BONUS EXAMPLE 🔥
// Example monthly Firebase storage used:
const stored = convertToGigabytes(77778); // "77.78GB"
// 5GB Free tier monthly allowance:
const free = 5;
// Calculate total Firebase storage bill:
const billable = (parseFloat(stored) - free); // 72.78
// Format total using currency conversion
const totalBill = convertToUSD(billable * 0.026); // "$1.89"
Temperature conversion
// 🌡 Convert tempertaure to °C or °F:
const convertTemp = (unit, degrees) => {
// Handle output based on unit input:
switch (unit) {
case "celsius":
degrees = ((degrees - 32) / 1.8000);
break;
case "fahrenheit":
degrees = ((degrees * 1.8000) + 32);
break;
}
return new Intl.NumberFormat("en-US", {
style: "unit",
unit: unit,
minimumFractionDigits: 2,
maximumFractionDigits: 2,
}).format(degrees);
};
// °C → 🥶 → °F
convertTemp("fahrenheit", 21); // "69.80°F"
// °F → 🔥 → °C
convertTemp("celsius", 97); // "36.11° C"
You can learn more about Intl.NumberFormat(), the Internationalization API, and the ECMAScript specification for all the properties, values, and methods available on MDN