Solución:
Si usted tiene una cuerda, analícelo como un número entero:
var num = '20.536';
var result = parseInt(num, 10); // 20
Si usted tiene un número, ECMAScript 6 ofrece Math.trunc
para un truncamiento completamente consistente, ya disponible en Firefox 24+ y Edge:
var num = -2147483649.536;
var result = Math.trunc(num); // -2147483649
Si no puede confiar en eso y siempre tendrá un número positivo, por supuesto, puede usar Math.floor
:
var num = 20.536;
var result = Math.floor(num); // 20
Y finalmente, si tiene un número en [−2147483648, 2147483647], puede truncar a 32 bits utilizando cualquier operador bit a bit. | 0
es común, y >>> 0
se puede utilizar para obtener un entero de 32 bits sin signo:
var num = -20.536;
var result = num | 0; // -20
La respuesta de Travis Pessetto junto con la de Mozey. trunc2
function fueron las únicas respuestas correctas, considerando cómo JavaScript representa números de punto flotante muy pequeños o muy grandes en notación científica.
Por ejemplo, parseInt(-2.2043642353916286e-15)
no analizará correctamente esa entrada. En lugar de regresar 0
volverá -2
.
Esta es la forma correcta (y en mi humilde opinión, la menos loca) de hacerlo:
function truncate(number)
{
return number > 0
? Math.floor(number)
: Math.ceil(number);
}
Agregaré mi solución aquí. Podemos usar el piso cuando los valores están por encima de 0 y el techo cuando son menores que cero:
function truncateToInt(x)
{
if(x > 0)
{
return Math.floor(x);
}
else
{
return Math.ceil(x);
}
}
Luego:
y = truncateToInt(2.9999); // results in 2
y = truncateToInt(-3.118); //results in -3
Aviso: Esta respuesta fue escrita cuando Math.trunc(x)
era bastante nuevo y no era compatible con muchos navegadores. Hoy en día, los navegadores modernos admiten Math.trunc(x)
.