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 :)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top