Convertir un número flotante en Int en JavaScript

Nithin Krishnan 30 enero 2023
  1. Convierta Float a Int usando la función parseInt() en JavaScript
  2. Convierta Float a Int usando Number.toFixed() en JavaScript
  3. Convierta Float a Int con operadores bit a bit en JavaScript
  4. Convierta Float a Int usando funciones de biblioteca Math en JavaScript
  5. Conclusión
Convertir un número flotante en Int en JavaScript

En JavaScript, tenemos muchas formas de convertir float en int, como se muestra a continuación.

  • La función parseInt()
  • El método Number.toFixed()
  • Conversión con operadores bit a bit
    • Aplicando OR por 0
    • Utilizando el operador doble NOT
    • Derecha SHIFT por 0
  • Uso de funciones de la biblioteca Math en javascript
    • Math.floor()
    • Math.round()
    • Math.ceil()
    • Math.trunc()

Convierta Float a Int usando la función parseInt() en JavaScript

parseInt() se usa ampliamente en JavaScript. Con esta función, podemos convertir los valores de diferentes tipos de datos al tipo entero. En esta sección, veremos la conversión de un número flotante a un número entero. La sintaxis de parseInt() es parseInt(<value>). El siguiente código muestra el comportamiento de la función.

console.log(parseInt(123.321));
console.log(parseInt(123.998));

Producción :

123
123

Observaciones

  • Para obtener más información, consulte los documentos de MSN.
  • Al convertir valores flotantes, parseInt() descarta los decimales y no los considera mientras devuelve la parte del número entero del valor flotante.
  • parseInt() devuelve NaN en caso de que la conversión no sea posible. Por lo tanto, es bueno incluir una verificación isNaN() al convertir valores para que el código sea seguro y no se rompa.

Convierta Float a Int usando Number.toFixed() en JavaScript

Number.toFixed() se comporta un poco diferente al parseInt(). Redondea el número al valor entero más cercano. Por lo tanto, tenga cuidado con el redondeo. Number.toFixed() redondea el valor decimal de float menor que .5 al valor entero más bajo. Si el valor decimal es 0.5 o mayor, el número flotante se redondeará al siguiente valor entero superior. La sintaxis de la función Number.toFixed() es la siguiente.

numberObject.toFixed(<number of digits>);

Por lo general, necesitamos pasar un parámetro a esta función que especifique el número de dígitos después del decimal en la salida. Para nuestro propósito, no necesitamos mencionar ningún argumento ya que, por defecto, toma el parámetro como 0, por lo que devuelve un valor entero. Consulte los siguientes códigos de muestra.

console.log( (123.123).toFixed(2) );
console.log( (123.123).toFixed() );
console.log( (123.98).toFixed() );
console.log( (123.49).toFixed() );
console.log( (123.5).toFixed() );

Producción :

123.12
123
124
123
124

Observaciones

  • A diferencia del método parseInt(), Number.toFixed() no es tan famoso por extraer la parte entera, ya que hace un redondeo del valor flotante pasado como parámetro.
  • Se puede usar esta función para convertir solo valores flotantes. A diferencia de la función parseInt(), la conversión de valor de cadena a flotante no es compatible con Number.toFixed().

Convierta Float a Int con operadores bit a bit en JavaScript

Hemos visto los métodos de parseInt() y Number.toFixed(). Ambos ejecutan algunas operaciones internas para obtener los resultados deseados. Los operadores bit a bit son eficientes, rápidos y eficaces para convertir los valores flotantes en un número entero en comparación con los dos métodos. Podemos utilizar los siguientes operadores bit a bit para la conversión.

Aplicando OR por 0

Podemos usar el operador OR bit a bit para obtener la parte entera de un número de punto flotante. Los operadores bit a bit funcionan a nivel binario. Convierte el número de operando a binario, y luego se ejecuta la operación bit a bit O. Aplicar O con 0 a cualquier número de punto flotante en el rango aceptable devolverá la parte del número entero del valor de punto flotante. Consulte los ejemplos siguientes.

console.log(123.321 | 0);
console.log(123.5432 | 0);
console.log(123.921 | 0);
console.log(216 | 0);
console.log(-321.456 | 0)

Producción :

123
123
123
216
-321

Uso del operador doble NOT

Otro operador bit a bit es el operador NO, representado por el signo ~. Al ser un operador unario, podemos usar el operador NOT bit a bit para eliminar la parte decimal en un número flotante. El operador NOT, a nivel binario, invierte los valores de los bits binarios (devolviendo 0 para un bit 1 y 1 para un valor de bit 0). Significa que si un número está representado en binario por 10110, al aplicarle NOT se obtiene el valor invertido 01001. De nuevo, aplicando la funcionalidad NOT devuelve los bits originales (10110) del número. Por lo tanto, aplicar el operador NOT dos veces devuelve el valor numérico y, durante el proceso, no cambia el número si es un entero. Pero para un valor flotante, la aplicación del operador NOT dos veces devolverá solo la parte del número entero del número flotante. Los siguientes ejemplos aclaran este hecho.

console.log(~~(123.321));
console.log(~~(123.53));
console.log(~~(23.97));
console.log(~~(-23.97));
console.log(~~(-0.97));

Producción :

123
123
23
-23
0

Desplazamiento a la derecha en 0

Podemos aplicar el operador de desplazamiento a la derecha bit a bit (representado por caracteres >>). Convertirá el valor flotante en un número entero. Debajo, en el nivel binario, el operador SHIFT derecho bit a bit desplaza los bits binarios del operando a la derecha por un recuento especificado por el segundo operando. Por lo tanto, ignora los bits que se desbordan hacia la derecha. Al hacerlo, la función conserva el valor del signo del número. Los siguientes códigos representan el funcionamiento del operador SHIFT derecho.

console.log(123.321 >> 0);
console.log(123.53 >> 0);
console.log(23.97 >> 0);
console.log(-23.97 >> 0);
console.log(-0.97 >> 0);

Producción :

123
123
23
-23
0

Observaciones

  • Los operadores bit a bit son más rápidos ya que están más cerca del lenguaje de máquina y no necesitan realizar comprobaciones u operaciones adicionales como se haría internamente con parseInt() o Number.toFixed().
  • Los operadores bit a bit como OR, NOT, etc., cuando se aplican a números grandes, pueden dar resultados inesperados. El valor máximo admitido para truncar el valor decimal es 2147483647 (231-1). Cualquier número superior a 2147483647 dará resultados inesperados.
  • En JavaScript, los números de coma flotante están representados por 64 bits, con un bit reservado para conservar el valor del signo (positivo o negativo), 32 bits para la parte del número entero. Los operadores bit a bit operan en los números de 32 bits con signo ignorando el valor decimal. Por lo tanto, obtenemos la parte del número entero del valor flotante.

Convierta Float a Int usando funciones de biblioteca Math en JavaScript

Podemos usar la biblioteca JavaScript Math, que tiene varias funciones para obtener enteros a partir de números de punto flotante. A diferencia de los operadores bit a bit, estos ofrecen características adicionales basadas en requisitos como redondear valores a los números más cercanos, truncar valores, etc. Podemos usar los siguientes métodos para este propósito.

Conversión con Math.floor()

La función Math.floor() redondea el valor pasado como parámetro al siguiente valor entero inferior. La sintaxis de Math.floor() es Math.floor (<valor flotante>). A continuación se muestran algunos ejemplos que muestran el uso y cómo convierte un flotante en un número entero.

console.log(Math.floor(123.321));
console.log(Math.floor(123.53));
console.log(Math.floor(23.97));
console.log(Math.floor(-23.97));
console.log(Math.floor(-0.97));

Producción :

123
123
23
-24
-1

El caso de números flotantes negativos como Math.floor(-23.97) puede parecer confuso, pero la función convierte correctamente el valor al siguiente entero inferior, -24. Recuerde que cuanto mayor es el valor numérico de un número negativo, menor es su valor real.

Conversión con Math.round()

A diferencia de la función Math.floor(), Math.round() se aproxima al valor pasado en los parámetros. Si el valor después del decimal es 5 o mayor, entonces el número se redondea al siguiente entero superior. De lo contrario, si el valor después del decimal es menor que 5, se redondea al número entero inferior. Por lo tanto, en base al valor que aparece después del punto decimal, la función Math.round() puede comportarse de manera similar a las funciones Math.floor() o Math.ceil(). A continuación se muestran algunos ejemplos con Math.round().

console.log(Math.round(123.321));
console.log(Math.round(123.53));
console.log(Math.round(23.97));
console.log(Math.round(-23.97));
console.log(Math.round(-0.97));

Producción :

123
124
24
-24
-1

Conversión con Math.ceil()

La función Math.ceil() se comporta de forma opuesta a la función Math.floor(). En lugar de redondear al siguiente entero inferior como en Math.floor(), Math.ceil() devuelve el siguiente valor entero superior. A continuación se muestran algunas conversiones con Math.ceil().

console.log(Math.ceil(123.321));
console.log(Math.ceil(123.53));
console.log(Math.ceil(23.97));
console.log(Math.ceil(-23.97));
console.log(Math.ceil(-0.97));

Producción :

124
124
24
-23
-0

Conversión con Math.trunc()

Como sugiere el nombre, la función Math.trunc() trunca el valor decimal y devuelve la parte del número entero del valor flotante. Este método puede considerarse similar a los operadores bit a bit discutidos anteriormente. Aquí, no hay redondeo a los números enteros más cercanos. En cambio, devuelve la parte del número entero del valor flotante tal como está. A continuación se muestran algunos casos de uso con Math.trunc().

console.log(Math.trunc(123.321));
console.log(Math.trunc(123.53));
console.log(Math.trunc(23.97));
console.log(Math.trunc(-23.97));
console.log(Math.trunc(-0.97));

Producción :

123
123
23
-23
-0

Conclusión

Hay varias formas de obtener la parte del número entero de un valor flotante. Los operadores bit a bit tienen una ejecución más rápida, ya que realizan operaciones en el nivel binario sin los requisitos de conversión o cualquier otro procesamiento. parseInt(), Math.trunc() y los operadores bit a bit (OR por 0, doble NOT, desplazamiento a la derecha por 0) dan el número entero exacto como si desgarraran el valor flotante en el punto decimal y devuelve solo la parte entera del número. Si estamos interesados ​​en procesar el número flotante para redondearlo u obtener el número entero más cercano según el requisito comercial, sería bueno utilizar las funciones Number.toFixed(), Math.round(), Math.ceil() y Math.floor().

Artículo relacionado - JavaScript Integer