2011-01-16 7 views
16

저는 초보자입니다. W3Fools에서 일부 자바 스크립트를 배웠기 때문에 나는 바보 같아서 용서해줍니다. (정말 어려운 튜토리얼입니다. 그들은 내가 알고 싶어하는 것을 설명하지 않지만 아마도 할 수있는 모든 것을 설명합니다. C + +로 내 경험에서 추측).JavaScript의 정수

나는 MDN으로 전환 될 수 있지만 다른 튜토리얼을 추천 할 수 있다면 좋을 것입니다. 난 그냥 this의 몇 줄을 읽고, 분명히

:

은 어쨌든, 그래서 여기 내 질문 자바 스크립트

숫자가 "이중 정밀도 64 비트 형식입니다 IEEE 754 개 값 "사양에 따라. 여기에는 흥미로운 결과가 있습니다. 자바 스크립트에는 과 같은 정수가 없으므로, 은 산술에 조금주의해야합니다. C 또는 자바로 계산하는 데 익숙하다면 계산할 수 있습니다.

저는 C++에서 익숙해 진 변수에 대한 데이터 유형이 거의 없음을 이미 보았습니다. 하지만 모든 숫자가 자동으로 float이 될 것이라고는 예상하지 못했습니다. int egers를 사용할 방법이 없습니까? float이 아닙니까? 자바 스크립트의 향후 버전이 int을 지원합니까?

+4

MDN은 훌륭한 자원 자주 SO 여기 참조됩니다. –

답변

13

자바 스크립트에는 실제로 몇 가지 데이터 유형 (객체, 숫자 및 문자열) 만 있습니다. 읽으면서 JS 수는 모두 64 비트 수레입니다. int가 없습니다. https://developer.mozilla.org/en/JavaScript_typed_arrays

그 때까지,이 문자열로 정수 배열을 저장하는 hackish 방법이 있고, 밖으로 따 버릴 각 정수 :

파이어 폭스 4는 실제의 int의 배열 등을 할 수 있습니다 형식화 된 배열에 대한 지원을해야합니다 charCodeAt()을 사용하십시오.

4

정수를 지원할 것이라고 생각하지 않습니다. 모든 부호없는 32 비트 정수가 64 비트 부동 소수점 수로 정확하게 표현 될 수 있으므로 문제가되지 않습니다.

최신 자바 스크립트 엔진은 숫자가 정수일 때 (안전 확인을 통해 확인) 특수 코드를 생성 할만큼 똑똑 할 수 있지만 확실하지 않습니다.

+3

모든 JS 엔진 (SpiderMonkey의 첫 번째 구현 - 첫 번째 JS 엔진에서 가능)은 가능한 경우 int32- 수학을 사용했습니다. – gsnedders

+2

64 비트 int 이상을 원할 때까지는 문제가되지 않습니다. – Thanatos

+1

글쎄, 실제로는 아주 큰 문제 일 수 있습니다. 100,000 개의 정수를 자바 스크립트에 보내서 요약하도록 요청하면 부동 소수점 문제로 인해 아주 이상한 답변을 얻을 수 있습니다. 그래서이 질문을 발견했습니다. –

0

정수는 제로입니다. 그것은 필요할 때마다 변수를 반올림하는 간단한 문제 여야합니다. 성능 오버 헤드가 전혀 나쁘지 않습니다.

0

정말로 정수를 사용해야하는 경우 발생하는 각 숫자에 floor 메소드를 사용하십시오.

자바 스크립트의 느슨한 타이핑은 그 중 하나입니다.

2

사용이 :

function int(a) { return Math.floor(a); } 

그리고 요는 다음과 같이 사용할 수 있습니다 :

var result = int(2.1 + 8.7 + 9.3); //int(20.1) 
alert(result);      //alerts 20 
+0

'Math.floor'의 약간의 별명을 만드는 것 이외에는 어떤 점이 있습니까? –

+1

사실 ..... – qwertymk

+13

나는 여분의 함수 호출을 피하기 위해'var int = Math.floor;'를 사용할 것이다. – ChaosPandion