2014-04-10 2 views
0
소수점

로 지정된 기수 I 다음 계산 : 원함 1.3 배 예상 결과 인 값을 반환으로 parseInt()는 0.77 배 예상 결과로,

$(function() { 
     $("#x").click(function() 
      { 
      var n1 = parseFloat(76790); 
      var n2 = parseFloat(5.3/100); 
      var n3 = parseFloat(1.6); 
      n3 = parseInt(n3, 10); 

      var result = n1*(n2+(n2*n3)); 

      $("#qid_185").val(result); 
      } 
    ); 
}); 

한다. parseInt 줄을 제거하면 n3 = parseInt(n3, 10); 값이 예상 한 것과 같습니다.

parseint 라인이 필요 없기 때문에 문제를 해결하기 위해 제거 할 수 있지만 왜 이런 일이 일어나는지 알고 싶습니다. 기수로 10 진수를 지정합니다.

Js fiddle with parsint line 계산을 실행하기 위해 X 버튼을 누르면

Js fiddle without parsint line

- 올바른 값은 parsint 값은 0.77 시간이있다, 10581.662이다.

+0

는 정수와 N3를 덮어하고 그가에 사용되기 때문에 계산. –

+1

당신이 무엇을 기대했는지 확실하지 않습니다 ...? –

답변

4
parseFloat(1.6) => 76790 * ((5.3/100) + ((5.3/100)*1.6)) => 76790 * 0.1378 => 10581.662 

parseInt(1.6, 10) => 76790 * ((5.3/100) + ((5.3/100)*1)) => 76790 * 0.106 => 8139.74 

차이점은 parseFloat가 소수 자릿수를 제공하고 parseInt는 소수점을 자릅니다.

"10"을 기수로 사용하여 더 자세히 설명하기 위해 '10 진수'라는 용어를 기수로 사용하는 것을 잘못 이해했다고 생각합니다. 즉, 표준 숫자 시스템 인 "10 진수"가 "정수"(http://en.wikipedia.org/wiki/Decimal)가 아니라 1.6의 '.6'과 같은 소수점 이하 자릿수라는 의미입니다.

다른 예는 다음과 같습니다 진수, 16의 기수 - - - 8 진, 기수

기수 2의 진수

+0

아아 나는 parseInt가 정수와 정수만을 이해한다는 것을 알았지 만, 나는 그것을 쓰면서 내가 얼마나 바보인지를 아주 잘 알고있다. – Gideon