문제

나는 Google을 통해 검색했지만 (아마도 충분히 열심히 보이지 않았을 수도 있지만) Math.sqrt를 int로 바꾸는 방법을 찾을 수 없었습니다.

나는 math.sqrt를 사용하고 싶습니다 ~을 위한 루프와 나는 INT로 필요하다고 생각하지만 결과를 Int에 캐스팅하는 방법을 알 수는 없습니다. 그래서 어떻게해야합니까?

나는 Java와 비슷한 것을 시도했다 :

(int) Math.sqrt(num);

그러나 작동하지 않았습니다.

미리 감사합니다 :)

도움이 되었습니까?

해결책

사용 Math.round, Math.ceil, 또는 Math.floor 특정 반올림 요구에 따라.

"수학, 수학, 수학 및 수학 플로어 중 하나를 정수하기 위해 숫자를 반올림하기 위해서는 32 비트 서명 정수로 표현할 수있는 원하는 결과를 얻을 수 있습니다.

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

다른 팁

누군가 Parseint를 제안했습니다. 그것은 문자열에서 int로 이동하지만 플로트를 문자열로 바꾸는 것은 쉽습니다.

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

당신이 무엇을하든 JavaScript는 항상 부유물을 사용하고 있음을 기억하십시오. 정수 유형이 없습니다.

Math.floor가 할 것입니다. 그래도 정수에 가야한다고 의심하십시오.

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

사용 parseInt(Math.sqrt(num)+"") 사용하는 것보다 느립니다 Math.round(Math.sqrt(num)). 첫 번째 예에서 당신은 문자열을 만들고 있기 때문에 num 그리고 그것을 반올림합니다. 두 번째 예에서는 int를 가져 와서 둥글게합니다.

나는 이것이 오래된 질문이라는 것을 알고 있지만, 나중에 이것을 찾는 사람은 ....

나는 다른 대답의 말을 되풀이하지 않을 것이지만, 당신이 할 수있는 재미있는 작은 트릭은 다음과 같습니다.

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

이중 비트 비트 네거티브는 소수점 이후에 아무것도 떨어집니다. 나는 그것이 약간 더 빠르다고 들었지만 완전히 확신하지는 않습니다.

편집 : 참고로 이것은 0으로 반올림됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top