请考虑:
<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。为什么会这样呢?
我尝试了所有的技巧。我首先将变量转换为字符串,然后将其解析为int进行相加,使用了不同的基数用于parseInt,但是我仍然得不到正确的结果。
我还注意到,当我向其中提供16个1时,它能够正常工作,但是如果提供17个1,则会出现上述问题。
10
。默认情况下,一些浏览器会将进制认为是八进制,即8
。详见此处。 - Mr_Greenvar val3 = val1 - - val2; var x = num1 - - num2;
- Mr_Green+'11111111111111111' + 0
(隐式使用+
的parseInt
)在至少 Chrome 中也会得出11111111111111112
。 - pawel11111111111111111 === 11111111111111112 // true
。在发帖之前,请尝试测试您的“解决方案”... - JJJ