12

私はグーグルで検索しましたが(多分私は十分によく見えませんでした)、Math.sqrtをintに変える方法を見つけることができませんでした。

forループにMath.sqrtを使用したいのですが、intとして必要だと思いますが、結果をintにキャストする方法がわからないようです。では、どうすればよいですか?

私はJavaに似たものを試しました:

(int) Math.sqrt(num);

しかし、それはうまくいきませんでした。

前もって感謝します :)

4

5 に答える 5

25

、、または特定の丸めのニーズに応じて使用しますMath.roundMath.ceilMath.floor

「数値を整数に丸めるには、Math.round、Math.ceil、Math.floorのいずれかを使用することをお勧めします。また、32ビットの符号付き整数として表現できる望ましい結果を得るには、以下で説明するビット演算も適しています。」

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

于 2009-02-01T05:40:06.820 に答える
5

誰かがparseIntを提案しました。それは文字列から整数になりますが、floatを文字列に変えるのは簡単です。

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

何をするにしても、JavaScriptは常にfloatを使用していることを忘れないでください。整数型はありません。

于 2009-02-01T05:53:18.120 に答える
4

Math.floorがそれを行います。ただし、整数に移動する必要があることは間違いありません。

Math.floor(Math.sqrt(num));
于 2009-02-01T05:44:48.670 に答える
3

を使用するparseInt(Math.sqrt(num)+"")と、 を使用するよりも遅くなりMath.round(Math.sqrt(num))ます。num最初の例では、文字列を作成し、整数値を解析して丸めているためだと思います。2 番目の例では、単に int を取り、それを丸めます。

于 2012-04-28T03:11:10.683 に答える
1

これは古い質問であることは知っていますが、後でこれを見つけた人のために考えます....

私は他の答えが言うことを繰り返しませんが、あなたができる楽しい小さなトリックは次のとおりです。

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

二重のビットごとの負数は、小数点以下をすべて削除します。少し速いと言われましたが、完全には確信が持てません。

編集:注として、これは0に向かって丸められます。

于 2013-01-16T10:02:08.920 に答える