JavaScript parseInt 不正确的转换

标签 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 中添加两个数字。但是,当我向文本框提供“11111111111111111”时,parseInt 会将其转换为 11111111111111112 而不是 11111111111111111。为什么要这样做?

我已经尝试了所有技术。我首先将 var 转换为字符串并将其解析为 int 然后添加,使用不同的基数与 parseInt,但我仍然一无所获。

我还注意到,当我向它提供 16 个 1 时,它工作正常,但如果提供 17 个 1,它就会这样。

最佳答案

JavaScript numbersIEEE 754具有 15-17 位有效数字精度的 double 。

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

关于JavaScript parseInt 不正确的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257881/

相关文章:

javascript - 即使在页面重新加载后如何保留添加行及其值

javascript - 将正常自执行的第三方 JavaScript 库导入 React 应用程序(使用 create-react-app)

javascript - Javascript 中范围 (31-40) 字符串的 parseInt

java - Integer.parseInt() 错误

javascript - 如何更改显示的选择文本?

javascript - Node REPL 抛出语法错误 : Unexpected identifier

javascript - Javascript 日期中的破折号

javascript - 将 CSV 字符串转换为不带 .split() 的数组

java - 尝试读取整数和字符串文件并出现错误

java - 使用 parseInt 更改整数值