redondear - math.sqrt javascript
Javascript: ¿Reparte Math.sqrt a int? (5)
He buscado a través de google (tal vez no parecía lo suficientemente duro) pero no pude encontrar cómo convertir Math.sqrt en un int.
Quiero usar Math.sqrt para un ciclo for y supongo que lo necesito como un int pero no puedo encontrar la manera de convertir el resultado en un int. Entonces, ¿cómo lo hago?
Intenté algo similar a Java:
(int) Math.sqrt(num);
Pero no funcionó.
Gracias por adelantado :)
Use Math.round
, Math.ceil
o Math.floor
dependiendo de sus necesidades específicas de redondeo.
"Para redondear números a números enteros, uno de Math.round, Math.ceil y Math.floor es preferible, y para un resultado deseado que se puede expresar como un entero de 32 bits con signo, la operación de bit descrita a continuación también podría ser adecuada".
- http://www.jibbering.com/faq/faq_notes/type_convert.html#tcNumber
Usar parseInt(Math.sqrt(num)+"")
es más lento que usar Math.round(Math.sqrt(num))
. Creo que es porque en el primer ejemplo estás creando una cadena, analizando el valor entero de num
y redondeándolo. en el segundo ejemplo, simplemente toma int y lo redondea.
Sé que esta es una vieja pregunta, pero creo que cualquiera que encuentre esto más tarde ...
No voy a reiterar lo que dicen las otras respuestas, pero un pequeño truco divertido que puedes hacer es:
Math.sqrt(2); //1.41......
~~Math.sqrt(2); //1
el doble bit negativo arroja algo después del punto decimal. Me han dicho que es un poco más rápido, pero no estoy del todo convencido.
EDITAR: como nota, este redondeará hacia 0.
Alguien sugirió un parseInt. Eso va de una cadena a una int, pero es fácil convertir una flotación en una cadena.
parseInt(Math.sqrt(num)+"")
Recuerda que no importa lo que hagas, JavaScript siempre usa flotadores. No hay un tipo entero.
Math.floor lo hará. Sin embargo, incluso se necesita ir a un número entero.
Math.floor(Math.sqrt(num));