BASE DE DADOS DE CONHECIMENTO

O ajuste do formato de número parece arredondar os valores incorretamente


Publicado: 15 Oct 2015
Data da última modificação: 10 Nov 2023

Problemas

Ao ajustar o número de casas decimais exibidas para um número, os números podem parecer arredondados para cima ou para baixo incorretamente. Por exemplo, um número exibido como 40,5 pode ser alterado para 40 quando a formatação for alterada para a exibição de zero casas decimais.

Além disso, ao usar ROUND() em uma função STR(), o arredondamento pode ficar incorreto ao ser conectado a uma extração. Por exemplo: STR(ROUND(SUM[Sales]),2)

Ambiente

Tableau Desktop

Resolução

Opção 1

O arredondamento pode ser realizado no Tableau Desktop com a função ROUND(). No entanto, a agregação deve ser considerada ao escrever o cálculo, pois o Tableau pode interpretar o cálculo relativo às agregações aplicadas. Por exemplo, se o campo necessário para o arredondamento for SUM([Field]) e o cálculo informado for ROUND([Field]), então, o Tableau interpretará o referido cálculo como  SUM(Round([Field])

Para corrigir esse comportamento, reescreva o exemplo de cálculo acima da seguinte forma: ROUND(SUM(Field))

Para ver um exemplo concreto, consulte a pasta de trabalho em anexo com o nome Round String.twbx.

Opção 2

Use modificadores de cadeia de caracteres adicionais, como LEFT(), bem como ferramentas adicionais de arredondamento, como CEILING(), para criar uma representação mais precisa.
  • Observe que essas modificações podem criar um campo calculado longo e não muito eficaz: STR(ROUND(SUM[Sales]),2) = 319.147230000001
  • Usando as modificações acima: LEFT(STR((CEILING(SUM([Sales])*100))/100),6) = 319.15

Opção 3

Exiba os dados subjacentes para verificar o número original, a fim de garantir que ele seja arredondado corretamente para o formato de número. Por exemplo, se uma casa decimal fosse especificada, um valor original de 40,48 seria arredondado corretamente para 40,5 e para 40, se nenhuma casa decimal fosse especificada.

Causa

O Tableau Desktop (Tableau Prep) arredonda os números com base no valor original no banco de dados, seguindo a convenção "arredondar para cima por meia casa decimal". 

Informações adicionais

Como este comportamento não é específico para o Tableau Desktop, é mais importante para como os computadores armazenam os dados, especificamente, o que é considerado valores "decimais". Os inteiros são fáceis, basta adicionar ou subtrair um número inteiro, o que também pode ser feito com os dados binários: 
  • Em decimal: 4 + 1 = 5 
  • Em binário: 100 + 1 = 101 
No entanto, uma representação simples em decimal pode não ser traduzida perfeitamente em binário com valores decimais, traduzindo esses valores distintos para uma representação binária.

Por exemplo, .1 é simples em decimal, mas o número que representa esse valor em binário pode representar simultaneamente .0999999999999999 e .1000000000000001 e todos os números entre eles. (Observe que há exatamente 16 casas decimais em cada número.) Isso pode ser tratado ao exibir os valores de número na camada de exibição, mas o cálculo dos valores ou a conversão em cadeias de caracteres exibirá os valores subjacentes; esse comportamento varia conforme diversos fatores, incluindo a base de dados. 

Confira a seguir alguns exemplos/artigos que demonstram como esse problema se manifesta em todos os idiomas e é fundamental na ciência da computação. 
Para discussão sobre este tópico e possíveis alternativas no Tableau Desktop, consulte o seguinte tópico nos Fóruns da Comunidade: Arredondar e converter para uma cadeia de caracteres

Para obter mais informações sobre a função ROUND(), consulte a seguinte documentação da Ajuda do Tableau: Funções de número.


Este artigo resolveu o problema?