Javascript: Elenco Math.sqrt para int?
-
20-08-2019 - |
Pergunta
Eu procurei através do google (talvez eu não olhar duro o suficiente), mas eu não poderia encontrar como transformar Math.sqrt em um int.
Eu quero usar Math.sqrt para um para loop e eu acho que eu preciso dele como um int, mas eu não consigo descobrir como converter o resultado para um int. Então, como posso fazer isso?
Eu tentei algo semelhante ao Java:
(int) Math.sqrt(num);
Mas não deu certo.
Agradecemos antecipadamente:)
Solução
Use Math.round
, Math.ceil
, ou Math.floor
dependendo das necessidades de sua específicas arredondamento.
"Para arredondamento números inteiros para uma de Math.round, Math.ceil e Math.floor são preferíveis, e para um resultado desejado que pode ser expresso como um número inteiro de 32 bits com sinal a operação bit a bit descrito abaixo Podem terno. "
- http://www.jibbering.com/faq/faq_notes/type_convert .html # tcNumber
Outras dicas
Alguém sugeriu parseInt. Que vai de uma string para um int, mas é fácil transformar uma bóia em uma string.
parseInt(Math.sqrt(num)+"")
Lembre-se que não importa o que você faz, JavaScript está sempre usando carros alegóricos. Não há nenhum tipo inteiro.
Math.floor vai fazê-lo. Duvido que você precisa mesmo de ir para um inteiro, no entanto.
Math.floor(Math.sqrt(num));
Usando parseInt(Math.sqrt(num)+"")
é mais lento do que usar Math.round(Math.sqrt(num))
. Eu acho que é porque no primeiro exemplo você está criando corda, análise de valor inteiro de num
e arredondando-lo. no segundo exemplo você tomar apenas int e volta.
Eu sei que esta é uma questão de idade, mas figura i para qualquer um encontrar este mais tarde ....
Eu não vou reiterar o que as outras respostas dizer, mas um truque divertido pouco que você pode fazer é:
Math.sqrt(2); //1.41......
~~Math.sqrt(2); //1
a dupla negativa bit a bit cai nada depois do ponto decimal. Eu tenho dito que é um pouco mais rápido, mas eu não estou totalmente convencido.
EDIT:. Como uma nota esta será rodada para 0