2009-02-01 210 views
12

我已經通過谷歌搜索(也許我看起來不夠努力),但我找不到如何將Math.sqrt變成int。Javascript:將Math.sqrt轉換爲int?

我想使用Math.sqrt 循環,我想我需要它作爲一個int,但我似乎無法弄清楚如何將結果轉換爲int。那我該怎麼做呢?

我試過類似Java的東西:

(int) Math.sqrt(num); 

但沒有奏效。

感謝提前:)

回答

24

使用Math.roundMath.ceil,或Math.floor根據具體舍入的需求。

「爲了將數字四捨五入爲整數,Math.round,Math.ceil和Math.floor中的一個是可取的,對於可以表示爲32位有符號整數的期望結果,下面描述的按位操作也可能適用「。

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

4

Math.floor將做到這一點。不過,你甚至有必要去一個整數。

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

有人建議parseInt。這是從一個字符串到一個int,但是很容易將一個float轉換爲一個字符串。

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

請記住,不管你做什麼,JavaScript總是使用浮動。沒有整數類型。

+0

編輯您的舊問題,無需重新張貼。 – 2009-02-01 05:57:14

3

使用parseInt(Math.sqrt(num)+"")比使用Math.round(Math.sqrt(num))慢。我認爲這是因爲在第一個例子中,你正在創建字符串,解析整數值num並四捨五入。在第二個例子中,你只需要int和round。

0

我知道這是一個老問題,但我想任何人都找到這個後來....

我不會重申其他的答案說什麼,但一個有趣的小竅門,你可以做的是:

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

雙位負數將小數點後的任何東西都關掉。我被告知它速度稍快,但我並不完全相信。

編輯:作爲一個說明,這將向0圓。