Question

J'ai effectué une recherche dans Google (peut-être que je n'ai pas assez cherché), mais je n'ai pas trouvé comment transformer Math.sqrt en int.

Je souhaite utiliser Math.sqrt pour une boucle pour et je suppose que j'en ai besoin en tant qu'int, mais je n'arrive pas à comprendre comment convertir le résultat en un entier. Alors, comment je le fais?

J'ai essayé quelque chose de similaire à Java:

(int) Math.sqrt(num);

Mais cela n'a pas fonctionné.

Merci d'avance :)

Était-ce utile?

La solution

Utilisez Math.round, Math.ceil ou Math.floor en fonction de vos besoins spécifiques en matière d'arrondi.

" Pour arrondir les nombres en entiers, préférez Math.round, Math.ceil et Math.floor, et pour obtenir un résultat souhaité pouvant être exprimé sous la forme d'un entier signé 32 bits, l'opération bit à bit décrit ci-dessous pourrait également convenir. & ";

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

Autres conseils

Quelqu'un a suggéré parseInt. Cela va d'une chaîne à un int, mais il est facile de transformer un float en chaîne.

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

N'oubliez pas que, quoi que vous fassiez, JavaScript utilise toujours des flottants. Il n'y a pas de type entier.

Math.floor le fera. Doute que vous ayez même besoin d'aller à un entier, cependant.

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

L'utilisation de parseInt(Math.sqrt(num)+"") est plus lente que l'utilisation de Math.round(Math.sqrt(num)). Je pense que c’est parce que dans le premier exemple, vous créez une chaîne, vous analysez la valeur entière de num et vous l’arrondissez. dans le deuxième exemple, vous prenez simplement int et arrondissez-le.

Je sais que c’est une vieille question, mais je pense que tous ceux qui trouveront cela plus tard ....

Je ne répéterai pas ce que disent les autres réponses, mais un petit truc amusant que vous pouvez faire est:

Math.sqrt(2); //1.41......
~~Math.sqrt(2); //1

le double négatif au niveau des bits laisse tomber quoi que ce soit après le point décimal. On m'a dit que c'était un peu plus rapide, mais je ne suis pas entièrement convaincu.

EDIT: cette note sera arrondie à 0.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top