Pregunta

He buscado a través de google (tal vez no me parece lo suficientemente duro), pero yo no podía encontrar la manera de convertir las Matemáticas.sqrt en un int.

Quiero usar las Matemáticas.la raíz cuadrada de un para bucle y creo que es necesario como un int, pero me parece que no puede averiguar cómo se convierte el resultado a un int.Entonces, ¿cómo puedo hacerlo?

He intentado algo similar a Java:

(int) Math.sqrt(num);

Pero no funcionó.

Gracias de antemano :)

¿Fue útil?

Solución

Use Math.round, Math.ceil o Math.floor según sus necesidades específicas de redondeo.

" Para redondear números a enteros, uno de Math.round, Math.ceil y Math.floor son preferibles, y para un resultado deseado que puede expresarse como un entero con signo de 32 bits, la operación bit a bit descrito a continuación también podría ser adecuado. "

- http://www.jibbering.com/faq/faq_notes/type_convert .html # tcNumber

Otros consejos

Alguien sugirió parseInt. Eso va de una cadena a un int, pero es fácil convertir un flotador en una cadena.

parseInt(Math.sqrt(num)+"")

Recuerda que no importa lo que hagas, JavaScript siempre usa flotantes. No hay un tipo entero.

Math.floor lo hará. Sin embargo, incluso es necesario ir a un número entero.

Math.floor(Math.sqrt(num));

El uso de parseInt(Math.sqrt(num)+"") es más lento que el uso de Math.round(Math.sqrt(num)).Yo creo que es porque en el primer ejemplo está la creación de la cadena, el análisis de valor entero de num y redondeo de ella.en el segundo ejemplo que acaba de tomar int y alrededor de ella.

Sé que esta es una vieja pregunta, pero creo que cualquiera que encuentre esto más tarde ...

No 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 negativo doble bit a bit deja cualquier cosa después del punto decimal. Me han dicho que es un poco más rápido, pero no estoy completamente convencido.

EDITAR: como nota, esto se redondeará hacia 0.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top