2014-06-17 4 views
3

고려 :자바 스크립트에서는 parseInt 잘못된 변환

<html> 
    <body> 
     <input Id="1"></input> 
     <input Id="2"></input> 
     <button Id="3"onclick="add()">Add</button> 
     <script> 
      function add() 
      { 
       var num1 = document.getElementById("1").value; 
       var val1 = parseInt(num1); 
       var num2 = document.getElementById("2").value 
       var val2 = parseInt(num2); 
       var val3 = val1 + val2; 
       var x = +num1 + +num2; 

       alert(val3); 
     </script> 
    </body> 
</html> 

내가 자바 스크립트에서 두 개의 번호를 추가하고 싶습니다. 하지만 '11111111111111111'을 텍스트 상자에 제공하면 parseInt가 11111111111111111 대신 11111111111111112로 변환됩니다. 왜 이렇게할까요?

나는 모든 기술을 시도했다. 먼저 var를 문자열로 변환하고 int로 파싱 한 다음 parseInt와 함께 다른 기수를 사용했지만 여전히 아무것도 얻지 못했습니다.

나는 또한 16 1을 제공 할 때 문제가 없지만 17 1은이를 수행함을 알 수있다.

+2

parseInt 올바른 형식은 기수입니다. 즉'parseInt (value, 10)'입니다. 여기서 기수는 10 진수의 경우 '10'입니다. 기본적으로 일부 브라우저는 기수를 8 진수, 즉 '8'로 가정합니다. 자세한 내용은 [** 여기 **] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt#Description)를 참조하십시오. –

+0

시도해 보았지만 여전히 동일한 결과를 제공합니다. 11111111111111112 – rao

+2

@Mr_Green 일부 브라우저는 문자열이 0으로 시작하지 않는 한 기수를 8 진수로 가정하지 않습니다. * 여기에는 해당하지 않습니다. 그리고 옥타브 11111111111111111은 확실히 11111111111111112가 아닙니다. – JJJ

답변

4

JavaScript numbers은입니다. 유효 숫자는 15-17 자릿수입니다.

귀하의 경우 11111111111111111 번호는 관찰 된 문제를 일으키는 17 자리 숫자입니다.

+0

소스를 가져 오는 +1. – karlipoppins