JavaScript parseInt转换不正确

时间:2014-06-17 07:20:18

标签: javascript 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>

我想在JavaScript中添加两个数字。但是,当我提供&#39; 11111111111111111&#39;到文本框,parseInt正在将其转换为11111111111111112而不是11111111111111111.为什么要这样做?

我尝试过所有技巧。我首先将var转换为string并将其解析为int然后添加,使用与parseInt不同的基数,但我仍然没有得到任何东西。

我还注意到,当我向它提供16个1时,它工作正常,但是有17个人正在这样做。

1 个答案:

答案 0 :(得分:4)

JavaScript numbersIEEE 754双精度数,其精确度为15-17位数。

在您的情况下,11111111111111111号码有17位数字,导致观察到的问题。