2009-02-01 12 views
12

Google을 통해 검색 한 적이 있습니다 (어쩌면 열심히 보지 못했을 수도 있습니다). 그러나 Math.sqrt를 int로 변환하는 방법을 찾을 수 없었습니다.자바 스크립트 : Math.sqrt를 int로 전송 하시겠습니까?

루프에 대해 에 Math.sqrt를 사용하고 싶습니다. int로 사용해야하지만 int에 결과를 캐스팅하는 방법을 알아낼 수 없습니다. 그러면 어떻게해야합니까?

나는 자바 비슷한 시도 :

(int) Math.sqrt(num); 

을하지만 그것은 작동하지 않았다. 특정 반올림 필요에 따라 사전 :

답변

24

사용 Math.round, Math.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

다시 게시하지 않고 이전 질문을 편집하십시오. –

+0

죄송합니다. 그때 나는 다른 사람의 대답에 대해 논평하는 명성을 얻지 못했고, 그것은 내가하려고했던 것이 었습니다. – Nosredna

+1

Nosredna가 논평하는 데 필요한 담당자가 없다는 것을 고려하면 부정 투표가 부당하다고 생각합니다. 중립. – Cerebrus

3

parseInt(Math.sqrt(num)+"")을 사용하면 Math.round(Math.sqrt(num))을 사용하는 것보다 느립니다. 첫 번째 예에서는 문자열을 생성하고 정수 값인 num을 파싱하고 반올림하기 때문이라고 생각합니다. 두 번째 예에서는 int를 사용하고 반올림합니다.

0

나는이 오래된 질문 알아요,하지만 난 사람이 나중에이를 찾는 그림 ....

난 다른 답변이 말을 반복하지 않을 것이다, 그러나 당신이 할 수있는 재미있는 약간의 트릭은 다음과 같습니다

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

이중 비트 단위 음수는 소수점 이하를 버립니다. 나는 그것이 약간 더 빠르다는 말을 들었지만, 나는 완전히 확신하지 못했습니다.

EDIT : 0으로 반올림됩니다.