Cómo establecer la precisión de coma flotante en JavaScript

En este breve tutorial, veremos cómo establecer la precisión de punto flotante en un cierto lugar decimal y cómo convertir a notación exponencial (científica) en JavaScript con toFixed(), toPrecision() y toExponential().

Establecer precisión de punto flotante en JavaScript

Los puntos flotantes en JavaScript tienen una precisión extremadamente alta y no siempre necesita esta precisión. Además, es aún menos probable que su usuario lo quiera. La mayoría de las veces, querremos "recortar" los números de coma flotante estableciendo una precisión específica (como, por ejemplo, dos puntos decimales) para un usuario final.

¡El objeto Number tiene varios métodos que nos permiten cambiar la precisión de un número de coma flotante en JavaScript!

aFijo()

toFixed() es un método Number que se usa para convertir un número a notación de punto fijo (redondeando el resultado donde sea necesario) y devuelve el valor como una cadena:

1
number.toFixed([decimalPlaces]);

decimalPlaces es opcional y define el número de dígitos que deben estar presentes después del lugar decimal y por defecto es 0:

1
2
3
4
5
6
let number = 12345.6789
  
console.log(number.toFixed())       // Returns '12346': note rounding, no fractional part
console.log(number.toFixed(1))      // Returns '12345.7': note rounding
console.log(number.toFixed(6))      // Returns '12345.678900': note added zeros
console.log((1.23e+20).toFixed(3))  // Returns '123000000000000000000.000'

Si el número de punto flotante no ofrece precisión hasta el punto fijo al que está formateando, se agregan 0 como relleno al final.

aPrecisión()

toPrecision() es un método de Número que da formato a un número en una cadena de precisión, haciendo un seguimiento de la cantidad total de dígitos (incluidos los dígitos a la izquierda y a la derecha del decimal) para mostrar un número:

1
number.toPrecision([significantDigits]);

significantDigits es opcional y denota el número de dígitos significativos que se mostrarán en el resultado. Si se omite, el método simplemente convierte el número en una cadena.

1
2
3
4
5
6
7
8
9
let number = 5.123456
  
console.log(number.toPrecision())    // logs '5.123456'
console.log(number.toPrecision(5))   // logs '5.1235'
  
number = 0.000123
  
console.log(number.toPrecision())    // logs '0.000123'
console.log(number.toPrecision(5))   // logs '0.00012300'

Los valores devueltos son del tipo cadena:

1
console.log(typeof number.toPrecision()) // string

{.icon aria-hidden=“true”}

Nota: El método toPrecision() rellenará el valor resultante con 0 si no hay suficientes dígitos significativos, y no cambia el valor del número original; devuelve un nuevo resultado.

aExponencial()

La función toExponential() en JavaScript se usa para mostrar un número en notación exponencial (a veces conocida como notación científica), incluso si el número está dentro del rango en el que JavaScript normalmente usa la notación estándar:

1
number.toExponential([fractionalDigits]);

{.icon aria-hidden=“true”}

Nota: Vale la pena señalar que con números suficientemente pequeños y suficientemente grandes, JavaScript los muestra automáticamente en su notación exponencial.

fractionalDigits como argumento es opcional y especifica cuántos dígitos fraccionarios se mostrarán en el resultado. Si falta este argumento, la salida puede contener hasta 16 dígitos fraccionarios, según su navegador:

1
2
3
4
5
6
let number = 95.3434;
  
console.log(number.toExponential());  // 9.53434e+1
console.log(number.toExponential(4)); // 9.5343e+1
console.log(number.toExponential(2)); // 9.53e+1
console.log(95.3434.toExponential()); // 9.53434e+1

{.icon aria-hidden=“true”}

Nota: El método toExponential() no cambia el valor del número original; devuelve un nuevo valor para almacenar.

Conclusión

En este breve tutorial, hemos cubierto el proceso de establecer una precisión para números de punto flotante en JavaScript, usando los métodos toExponential(), toFixed() y toPrecision() del objeto Number .