Hay ocasiones en los que manejamos valores con mucha precisión en su definición, pero de los cuales, nos puede llegar a interesar en un determinado momento el verlos como un valor general. Y es en este punto donde nos ayudan los dígitos significativos en Javascript.
Y, ¿qué es eso de los dígitos significativos en Javascript?. La idea que subyace detrás es la siguiente, imaginemos que estamos contabilizando elementos y el valor que tenemos es de 12.163.903 pero nos piden un datos general. Es decir, lo que queremos indicar es que estamos en los 12 millones de elementos contabilizados. Pues esto es en lo que nos ayudan los datos significativos en Javascript. Y para ello disponemos del objeto Intl.NumberFormat en Javascript.
Pero, vamos por paso. Lo primero que vamos a hacer es crear una lista de números. Para ello definiremos una constante con el array de números.
const cantidades = [1235467.64,24535467.12,3456783.2,15653231,8976562,3122122];
Y ahora iremos dando formato a esos números. Pero lo primero será definir la precisión que consideremos de nuestros números importantes. Eso nos lo ofrece el constructor de Intl.NumberFormat, el cual espera que le digamos la localización del idioma en el que trabajamos, en nuestro caso «es-ES» y el número de dígitos significativos. En nuestro caso vamos a indicar que hay dos números significativos.
new Intl.NumberFormat('es-ES', { maximumSignificantDigits: 2 })
Esto se hace mediante es segundo parámetro de opciones, el cual espera un elemento JSON y en concreto mediante la propiedad maximumSignificantDigits.
Lo que nos quedaría para poder aplicar este tipo de formato definido en el constructor sobre el número es llamar al método .format() que cogerá los valores y formateará el número.
new Intl.NumberFormat('es-ES', { maximumSignificantDigits: 2 }).format(numero)
Como habíamos definido un conjunto de números para hacer la prueba vamos a recorrerlos e ir invocando al constructor y al método .format() de forma iterativa. Para ello vamos a utilizar una estructura for-each.
cantidades.forEach(element => { console.log(new Intl.NumberFormat('es-ES', { maximumSignificantDigits: 2 }).format(element)); });
Podemos ver los números que teníamos y los valores de dígitos significativos que nos muestra cuándo indicamos que la precisión que queremos es de 2.
- 1235467.64 ⇒ 1.200.000
- 24535467.12 ⇒ 25.000.000
- 3456783.2 ⇒ 3.500.000
- 15653231 ⇒ 16.000.000 //Aquí vemos que se redondea hacía arriba
- 8976562 ⇒ 9.000.000
- 3122122 ⇒ 3.100.000
Espero el artículo os sea de utilidad.