考虑:
<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个人正在这样做。
答案 0 :(得分:4)
JavaScript numbers是IEEE 754双精度数,其精确度为15-17位数。
在您的情况下,11111111111111111
号码有17位数字,导致观察到的问题。