Javascript: Cast Math.sqrt in int?
-
20-08-2019 - |
Domanda
Ho cercato su google (forse non ho cercato abbastanza bene) ma non sono riuscito a trovare come trasformare Math.sqrt in un int.
Voglio usare Math.sqrt per un ciclo per e immagino di averne bisogno come int ma non riesco a capire come trasmettere il risultato a un int. Quindi, come posso farlo?
Ho provato qualcosa di simile a Java:
(int) Math.sqrt(num);
Ma non ha funzionato.
Grazie in anticipo :)
Soluzione
Usa Math.round
, Math.ceil
o Math.floor
a seconda delle tue esigenze di arrotondamento specifiche.
" Per arrotondare i numeri a numeri interi è preferibile uno di Math.round, Math.ceil e Math.floor, e per un risultato desiderato che può essere espresso come un intero con segno a 32 bit l'operazione bit a bit descritto di seguito potrebbe anche adattarsi. "
- http://www.jibbering.com/faq/faq_notes/type_convert .html # tcNumber
Altri suggerimenti
Qualcuno ha suggerito parseInt. Questo va da una stringa a un int, ma è facile trasformare un float in una stringa.
parseInt(Math.sqrt(num)+"")
Ricordate che non importa quello che fai, JavaScript viene sempre utilizzato carri allegorici. Non v'è alcun tipo intero.
Math.floor lo farà. Dubbio, però, devi anche andare a un numero intero.
Math.floor(Math.sqrt(num));
L'uso di parseInt(Math.sqrt(num)+"")
è più lento dell'uso di Math.round(Math.sqrt(num))
. Penso che sia perché nel primo esempio si sta creando stringa, nell'esame del valore intero di num
e arrotondamento esso. nel secondo esempio basta prendere int e arrotondarlo.
So che questa è una vecchia domanda, ma immagino che chiunque la troverà in seguito ....
Non ripeterò quello che dicono le altre risposte, ma un piccolo trucco divertente che puoi fare è:
Math.sqrt(2); //1.41......
~~Math.sqrt(2); //1
il doppio negativo bit a bit scende dopo il punto decimale. mi è stato detto che è leggermente più veloce, ma non sono del tutto convinto.
EDIT: come nota questo arrotonderà verso 0.