考虑:
<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 numbers是IEEE 754具有 15-17 位有效数字精度的 double 。
在您的情况下,11111111111111111
号码有 17 位数字,这会导致观察到的问题。
关于JavaScript parseInt 不正确的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257881/