Por que a fórmula do Notion não consegue formatar números com separador específico de localidade
🔍 WiseChecker

Por que a fórmula do Notion não consegue formatar números com separador específico de localidade

Você quer que uma fórmula do Notion exiba um número com vírgula como separador de milhar ou ponto como separador decimal de acordo com sua região, mas o resultado da fórmula mostra um número decimal bruto. A causa raiz é que as fórmulas do Notion não possuem função nativa para formatação de números sensível à localidade. Este artigo explica a limitação técnica e fornece soluções práticas usando manipulação de strings para alcançar o formato de separador desejado.

Principais conclusões: por que as fórmulas do Notion não usam separadores de localidade e como contornar isso

  • A linguagem de fórmula do Notion não possui função de localidade ou formato: Não há maneira nativa de aplicar separadores de milhar ou decimais específicos da região a um número.
  • Manipulação manual de strings com slice e concat: Você pode inserir uma vírgula ou ponto usando funções como format, slice e concat.
  • Limitações do tipo de propriedade: Propriedades numéricas armazenam valores brutos; a saída da fórmula é sempre uma string, então você perde a capacidade de ordenação numérica após a formatação.

ADVERTISEMENT

Por que as fórmulas do Notion não podem aplicar formatação de número específica de localidade

As fórmulas do Notion operam em um conjunto limitado de funções que tratam números como valores de ponto flutuante brutos. Não há função equivalente ao toLocaleString() do JavaScript ou ao TEXT() do Excel com código de localidade. O mecanismo de fórmula não tem acesso às configurações de localidade do seu navegador ou sistema. Quando você usa a função format() em um número, ela sempre gera um ponto como separador decimal e nenhum separador de milhar. Por exemplo, format(1234567.89) retorna "1234567.89" independentemente de sua região usar vírgula como separador de milhar. Esta é uma escolha de design deliberada para manter a linguagem de fórmula previsível e consistente entre plataformas.

A limitação técnica

O interpretador de fórmulas do Notion interpreta números usando ponto como separador decimal. Não há parâmetro na função format() ou em qualquer outra função para alterar o separador decimal ou de milhar. A única maneira de controlar a saída é converter o número em uma string e inserir manualmente os caracteres separadores desejados.

Passos para criar uma fórmula que insira um separador de milhar personalizado

Estes passos assumem que você tem uma propriedade numérica chamada “Valor”. A fórmula gerará uma string de texto com vírgula como separador de milhar e duas casas decimais. Você pode substituir a vírgula por ponto ou qualquer outro caractere.

  1. Abra o banco de dados e adicione uma propriedade de fórmula
    Clique na área do título do banco de dados e selecione “Adicionar uma visualização” ou vá ao menu de propriedades do banco de dados. Clique em “Adicionar uma propriedade” e escolha “Fórmula”. Nomeie como “Valor Formatado”.
  2. Escreva a fórmula para extrair a parte inteira
    Use a função floor() para obter a parte inteira: floor(prop("Valor")). Isso remove os decimais. Armazene temporariamente em uma variável se usar uma fórmula longa, mas para clareza escreveremos inline.
  3. Converta a parte inteira para string e inverta
    As fórmulas do Notion não têm função de reversão. Em vez disso, use uma combinação de format(), slice() e length() para inserir separadores a partir da direita. Uma abordagem mais simples para números de até 9 dígitos é codificar os separadores usando instruções condicionais if baseadas no comprimento da string.
  4. Aplique a lógica de inserção de separador
    Escreva uma fórmula que verifique o comprimento da string inteira e use concat() para inserir uma vírgula na posição correta. Exemplo para um número com 7 dígitos: concat(slice(format(floor(prop("Valor"))), 0, 1), ",", slice(format(floor(prop("Valor"))), 1, 4), ",", slice(format(floor(prop("Valor"))), 4, 7)). Isso é repetitivo, mas funciona.
  5. Adicione a parte decimal
    Use round() com um multiplicador para obter duas casas decimais: round(100 (prop("Valor") - floor(prop("Valor")))) / 100. Em seguida, converta para string e concatene com um ponto ou vírgula. Exemplo: concat(inteiroFormatado, ".", format(round(100 (prop("Valor") - floor(prop("Valor")))))).

Uma fórmula completa para um número de 7 dígitos com vírgula como separador de milhar e duas casas decimais é assim:

let(
  num, prop("Valor"),
  intPart, format(floor(num)),
  decPart, format(round(100  (num - floor(num)))),
  len, length(intPart),
  separador, ",",
  if(len == 7, concat(slice(intPart, 0, 1), separador, slice(intPart, 1, 4), separador, slice(intPart, 4, 7), ".", decPart),
  if(len == 6, concat(slice(intPart, 0, 3), separador, slice(intPart, 3, 6), ".", decPart),
  if(len == 5, concat(slice(intPart, 0, 2), separador, slice(intPart, 2, 5), ".", decPart),
  if(len == 4, concat(slice(intPart, 0, 1), separador, slice(intPart, 1, 4), ".", decPart),
  concat(intPart, ".", decPart)))))
)

ADVERTISEMENT

Problemas comuns e casos extremos na formatação manual de números

A fórmula retorna “NaN” ou “Indefinido”

Se a propriedade “Valor” estiver vazia ou não for um número, a função floor() pode retornar NaN. Adicione uma verificação usando if(empty(prop("Valor")), "", ...) para retornar uma string vazia quando a propriedade estiver em branco.

A parte decimal mostra apenas um dígito ou nenhum dígito

Quando a parte decimal é menor que 10, format() retorna um único dígito. Por exemplo, 0,05 se torna “5”. Use concat("0", format(...)) quando a parte decimal for menor que 10. Verifique com if(decPart < 10, concat("0", decPart), decPart).

Números com mais de 9 dígitos

Codificar separadores para cada comprimento possível é impraticável. Você pode usar uma abordagem recursiva com um loop let(), mas as fórmulas do Notion têm um limite de recursão. Para números com 10 ou mais dígitos, considere usar uma ferramenta de automação de terceiros como Zapier para formatar o número antes de escrevê-lo no Notion.

Limitações da formatação de números em fórmulas do Notion vs soluções alternativas

Aspecto de formatação Fórmula nativa do Notion Solução manual
Separador de milhar Não disponível Inserir vírgula ou ponto via concat e slice
Separador decimal Sempre ponto Substituir ponto por vírgula usando replaceAll() após formatação
Formatação sensível à localidade Não é possível Não é possível; a solução é estática
Ordenação numérica Preservada com tipo de propriedade Número Perdida quando a saída é uma string de texto
Manipulação de números grandes Precisão ilimitada Limitada pelo comprimento da fórmula e profundidade de recursão

ADVERTISEMENT

Conclusão

Agora você entende por que as fórmulas do Notion não podem formatar números com separadores específicos de localidade: a linguagem de fórmula não possui nenhuma função de localidade ou formatação. Você pode contornar isso inserindo manualmente os separadores usando concat, slice e format, mas a saída se torna uma string de texto que não pode ser ordenada numericamente. Para bancos de dados que exigem ordenação, mantenha a propriedade Numérica original e use uma propriedade de Fórmula separada para a exibição formatada. Se você precisar de suporte completo a localidade, considere usar uma integração externa ou um script da API do Notion que aplique toLocaleString() antes de escrever o valor.

ADVERTISEMENT