Formatando números em JavaScript com Intl.NumberFormat3 min de leitura

Categoria: JavaScript

Fala aeee! Hoje, vamos ver como formatar número em JavaScript usando o objeto NumberFormat (que faz parte da API de internacionalização do ECMAScript). Com este objeto você será capaz de formatar um número para vários formatos de países utilizando o método format. Portanto, nos casos em que você precisa, por exemplo, fazer a formatação para o formato pt-BR (moeda BRL) esse método será capaz de te ajudar para atingir este objetivo.

A sintaxe

O método format pode ser chamada da seguinte forma:

new Intl.NumberFormat([locales[, options]]).format(number)

Veja que os dois parâmetros são opcionais, sendo que se você informar o segundo, o primeiro precisa ser informado. Vamos ver o que cada parâmetro representa:

  • locales: representa uma tag que irá indicar o local de formatação do número. Esse parâmetro segue o padrão da linguagem BCP 47, mas você pode ver uma lista com as tags mais comuns clicando aqui.
  • options: é um objeto JavaScript com a configuração que irá informar o estilo/formatação final do seu número. Nos exemplos, vamos ver algumas das configurações mais úteis e comuns.

O uso mais básico

const formatNumber = new Intl.NumberFormat()

let number = 9123456.79;
console.log(formatNumber.format(number));
// → 9.123.456,79

Este é modo mais básico para se usar método format da instância NumberFormat(). Veja que não é passado nunhum parâmetro para a criação da instância do objeto NumberFormat() e com isso, ele irá pegar o formato padrão do sistema em que está sendo executado o script. No exemplo acima, como estou executando em um navegador que está em pt-BR, o formato de exibição considerou que o caractere ponto (.) representa o separador de casa decimal.

Usando o parâmetro locales

Imaginando que você queira indicar a tag de localização da formatação, para forçar a formatação do número para um determinando país. Veja como fica no exemplo a seguir:

const formatNumber = new Intl.NumberFormat('en-GB')

let number = 9123456.79;
console.log(formatNumber.format(number));
// → 9,123,456.79

No exemplo acima, estou usando o padrão da linguagem BCP 47 para forçar a formatação do número para o padrão de inglês do Reino Unido. Lembrando que, você pode ver uma lista com as tags mais comuns clicando aqui.

Usando o parâmetro options

Por último, o exemplo de uso mais completo é usando o parâmetro options que irá lhe conferir maior controle sobre sua formatação. Veja no exemplo explicado abaixo:

const options = { style: 'currency', currency: 'BRL', minimumFractionDigits: 2, maximumFractionDigits: 3 }
const formatNumber = new Intl.NumberFormat('pt-BR', options)

let number = 9123456.7115544;
console.log(formatNumber.format(number));
// → R$ 9.123.456,712

Este exemplo, lhe confere maior controle, pois você pode especificar várias opções de formatação para o valor numérico. Veja que eu especifiquei quatro parâmetros que cumprem a seguinte função:

  • style: estilo do formato a ser utilizado. Você pode especificar se quer um formato apenas com números "decimal""currency" para que o símbolo monetário apareça (igual ao exemplo acima) e "percent" para formato percentual; o padrão é "decimal".
  • currency: A moeda para usar na formatação monetária. Você pode conferir a lista de código das moedas clicando aqui.
  • minimumFractionDigits: quantidade mínima de casas decimais.
  • maximumFractionDigits: quantidade máxima de casas decimais.

Você pode consultar todos os parâmetros permitidos clicando aqui.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *