Parece que el ajuste de formato de número no redondea los números correctamente
Publicado: 15 Oct 2015 Fecha de la última modificación: 10 Nov 2023
Problema
Al ajustar el número de decimales que se muestran para un número, puede que parezca que los números se redondean al alza o a la baja de forma incorrecta. Por ejemplo, un número representado como 40,5 puede cambiar a 40 si se modifica el formato para no mostrar ningún decimal.
Además, al usar ROUND() en una función STR(), el redondeo puede ser incorrecto si está conectado a una extracción. Por ejemplo: STR(ROUND(SUM[Sales]),2)
Entorno
Tableau Desktop
Solución
Opción 1
El redondeo en Tableau Desktop se puede hacer con la función ROUND(). Sin embargo, se debe tener en cuenta la agregación al escribir el cálculo, ya que Tableau puede interpretarlo en relación con las agregaciones aplicadas. Por ejemplo, si el campo que se debe redondear es SUM([Field]) y el cálculo solicitado es ROUND([Field]), Tableau interpretará ese cálculo como SUM(Round([Field]).
Para corregir este comportamiento, vuelva a escribir el ejemplo de cálculo anterior de la siguiente forma: ROUND(SUM(Field)).
Para ver un ejemplo concreto, consulte el libro de trabajo adjunto denominado Round String.twbx.
Opción 2
Use más modificadores de cadenas como LEFT(), así como funciones de redondeo adicionales como CEILING(), para conseguir una representación más precisa.
Tenga en cuenta que estas modificaciones pueden crear un campo calculado largo y no muy efectivo: STR(ROUND(SUM[Sales]),2) = 319.147230000001
Utilice las modificaciones anteriores: LEFT(STR((CEILING(SUM([Sales])*100))/100),6) = 319.15
Opción 3
Consulte los datos subyacentes para comprobar el número original y asegurarse que se está redondeando de la forma correcta. Por ejemplo, un valor original de 40,48 se redondeará correctamente a 40,5 si especifica el uso de un decimal y a 40 si se especifica que no se usen decimales.
Causa
Tableau Desktop (Tableau Prep) redondea los números en función del valor original registrado en la base de datos, según la convención "redondeo al entero más próximo".
Información adicional
Como este comportamiento no es específico de Tableau Desktop, es más importante para saber cómo almacenan los equipos los datos, en concreto, lo que consideramos valores "decimales". Los enteros son fáciles, y simplemente sumando o restando un número puede hacer lo mismo con los datos binarios:
En decimal: 4 + 1 = 5
En binario: 100 + 1 = 101
Sin embargo, con los valores decimales, convertir estos valores distintos en una representación binaria, en ocasiones en una representación sencilla en decimal, no es una transformación perfecta a binario.
Por ejemplo, .1 es sencillo en decimal, pero el número que representa este valor en binario podría representar de forma simultánea tanto 0.0999999999999999 como 0.1000000000000001 y todos los números intermedios. (Tenga en cuenta que hay exactamente 16 decimales en cada número). Esto se puede controlar al mostrar los valores numéricos en la capa de presentación, pero realizar cálculos matemáticos en los valores o convertirlos en cadenas mostrará los valores subyacentes. Además, este comportamiento cambia en función de una serie de factores, incluida la base de datos.
A continuación se detalla una serie de ejemplos o artículos en los que se muestra cómo se manifiesta este problema, fundamental en la informática, en los distintos idiomas.
Para ver una conversación sobre este tema y las posibles soluciones en Tableau Desktop, consulte el siguiente hilo de los foros de la comunidad: Redondear y convertir en cadena.
Para obtener más información sobre la función ROUND(), consulte la siguiente documentación de la Ayuda de Tableau: Funciones numéricas.
Gracias por brindarnos sus comentarios sobre la eficacia de este artículo.