문자열을 다양한 방법으로 정수로 변환 할 수 있습니다.자바에서 int를 구문 분석하는 가장 좋은 방법
parseInt("-1",10)
Math.floor("-1")
~~"-1"
"-1"|0
Number("-1")
각각의 차이점과 이점은 무엇입니까? 어느 것이 가장 빠를 것으로 예상됩니까?
문자열을 다양한 방법으로 정수로 변환 할 수 있습니다.자바에서 int를 구문 분석하는 가장 좋은 방법
parseInt("-1",10)
Math.floor("-1")
"-1"|0
~~"-1"
Number("-1")
각각의 차이점과 이점은 무엇입니까? 어느 것이 가장 빠를 것으로 예상됩니까?
10 진수를 파싱하는 표준 방법은 parseInt(str, 10)
입니다.
에 대해서는 다른 솔루션 :
parseInt("-1")
: 당신이 위험하게 살고 싶어 경우에만Math.floor("-1")
("009"
소수점, 모든 일부 브라우저 가정) 사용 : 그것은 바닥 수 있습니다 아닌 INT ,하지만 그것이 올바른지 알고 싶다면Number("-1")
: 어쩌면 당신은 승진없이 메소드를 호출 할 수 있고 쓰레기가 없다고 확신 할 수있는 객체를 원할 것입니다. (Number('3 flowers')
==>NaN
)"-1"|0
~~"-1"
및 암시 적 변환과 이진 연산의 다른 조합 : 코드 골프를 좋아하고 코드를 쉽게 유지 관리하는 것을 원하지 않습니다. (궁금한 사항 : 이진 연산은 숫자의 정수 부분을 차지함). Blender가 언급 한 바와 같이, 이러한 솔루션은 큰 (양수 또는 음수) 숫자에는 적합하지 않습니다.문자열에 int가 포함되어 있는지 확인할 필요가없는 경우 parseInt(str,10)
이외의 다른 솔루션을 사용하지 마십시오. 이것이 가장 빠른 솔루션이며, 더 중요한 것은 읽을 수있는 솔루션입니다. JS 엔진이 몇 가지 최적화 작업을 수행한다면 다른 솔루션보다 빠른 속도를 낼 이유가 없습니다.
또한,''n "| 0'과'~~"n "'은'2^31 - 1'보다 큰 모든 숫자에 대해서는 실패합니다. ('-2^31-1 '보다 작다고 생각합니다. – Blender
단항 플러스는 어떻게됩니까? 그것은 특별히 유형 변환으로 설계된 것 같습니다.
+"-1" // -1
모든 브라우저에서 원하는 결과를 얻으려면 parseInt에 기수를 추가하십시오. –
[jsperf - 문자열을 정수로] (http://jsperf.com/str2intbench) – Sirko
@Sirko 이것은 매우 유용한 링크입니다! 그것은'eval ("- 1")이 가장 느린 것 (멀리)이고, 산술 * 해킹 *이 가장 빠릅니다. 와우. 재미있는 대답으로 쉽게 전환 할 수 있습니다. – emesx