2012-08-03 4 views
2

매개 변수의 숫자 유형에 따라 다르게 동작하는 함수를 작성했습니다. 정수 또는 실수. 플로트 그때 난 당신이 그 번호를 사용하여 함수를 호출하는 경우 자바 스크립트가 이유없이 11.0 캐스트의 경우 우연히 여부하지만 경우가 쉬웠다이 질문에 How do I check that a number is float or integer?에서 몇 가지 코드를 사용Javascript는 부동 소수점 숫자를 정수없이 정수로 변환합니다.

감지합니다.

예 :

출력 크롬, 파이어 폭스, 즉, 오페라와 사파리는 모두 같은 결과를 준
function dump(a, b) { 
console.log(a, typeof b, b); 
} 

dump('1', 1); 
dump('1.0', 1.0); 
dump('1.1', 1.1); 

:

1 number 1 
1.0 number 1 "wrong" 
1.1 number 1.1 

내가 자바 스크립트는 유형 number을 알고 있지만 강제 캐스트가 보인다 알을 선외로 나가기. 내가 생각해 낸 유일한 해결책은 '1.0'과 같은 문자열 값을 사용하여 함수를 호출하고 점을 감지하여 parseFloat 또는 parseInt을 사용하는 것입니다.

이에 대한 제안이 있으십니까?

+0

가 왜 1.0''필요합니까 부동의 정수입니까? 그것들은 같은 가치입니다. JavaScript에는'int' 또는'float'의 개념이 없으며 단지 숫자입니다. –

+1

작성한 기능이란 무엇입니까? 'int' 또는'float'이라면 왜 중요합니까? –

+0

이 함수는 난수를 반환합니다. 초기 값에 따라 4,10 => 7 (int) 또는 1.5, 12 => 4.25가 될 수 있습니다. – naden

답변

4

자바 스크립트에는 Number 유형 만 있습니다. 이와 같이 11.0과 동일합니다.

표시 목적으로 이것을 사용해야하는 경우 toFixed을 사용해야합니다. 해당 조건이 true 경우

1..toFixed(1); // "1.0" 
+0

디스플레이 목적이 아닙니다. 연산의 결과에 따라 함수는 parse (Type)를 사용하여 float 또는 int 값을 반환합니다. – naden

+0

@naden : "ints"에도'parseFloat'을 사용할 수 있습니다. 'parseFloat ('12 ') === 12'. –

+1

@naden : 이해가 안됩니다. 이미 JavaScript에서 이러한 구분이 없다는 것을 알고 있다고 언급하셨습니다.JavaScript가 없어도 구별이있는 것처럼 JavaScript를 작동 시키려면 문자열을 사용하는 것 외에도 운이 없네요. –

0
number%1===0 

, 그것은 다른 사람이 '1'에 비해

+0

두 번째 생각에서 1.0에서는 작동하지 않을 수도 있습니다. ( – kidwon

+0

불행하게도 나는 강제로 "캐스트"때문에 잘못된 것을 지적했습니다. 예제 코드를 실행하여 효과가 있음을 확인하십시오. – naden

+0

저는 아닙니다. 틀린 방법은 js가 작동하는 방식 일뿐입니다. 어쨌든 이제는 10보다 1을 수정해야합니다. http://jsfiddle.net/EKmT3/5/ – kidwon

관련 문제