我有两个字符串,其中只包含数字:
var num1 = '20',
num2 = '30.5';
我本以为我可以把它们加在一起,但它们却被连接起来:
num1 + num2; // = '2030.5'
我如何才能迫使这些字符串被视为数字?
我有两个字符串,其中只包含数字:
var num1 = '20',
num2 = '30.5';
我本以为我可以把它们加在一起,但它们却被连接起来:
num1 + num2; // = '2030.5'
我如何才能迫使这些字符串被视为数字?
当前回答
document.getElementById(currentInputChoosen).value -= +-100;
在我的情况下,如果你遇到了和我一样的问题,却找不到解决方案,找到了这个SO问题。
抱歉有点跑题了,但我刚刚发现这是有效的,我想它可能值得分享。
不知道这是一个肮脏的变通办法,还是真的合法。
其他回答
function sum(){
var x,y,z;
x = Number(document.getElementById("input1").value);
y = Number(document.getElementById("input2").value);
z = x + y;
document.getElementById("result").innerHTML = z ;
}
如果你需要把两个非常大的字符串加在一起,你需要在每个字符串位置计算加法:
function addStrings(str1, str2){
str1a = str1.split('').reverse();
str2a = str2.split('').reverse();
let output = '';
let longer = Math.max(str1.length, str2.length);
let carry = false;
for (let i = 0; i < longer; i++) {
let result
if (str1a[i] && str2a[i]) {
result = parseInt(str1a[i]) + parseInt(str2a[i]);
} else if (str1a[i] && !str2a[i]) {
result = parseInt(str1a[i]);
} else if (!str1a[i] && str2a[i]) {
result = parseInt(str2a[i]);
}
if (carry) {
result += 1;
carry = false;
}
if(result >= 10) {
carry = true;
output += result.toString()[1];
}else {
output += result.toString();
}
}
output = output.split('').reverse().join('');
if(carry) {
output = '1' + output;
}
return output;
}
可以使用parseInt将字符串解析为数字。为了安全起见,始终传递10作为以10为基数解析的第二个参数。
num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
我会先用一元加号运算符把它们转换成数字。
+num1 + +num2;
@cr05s19xx对重复问题的建议:
当涉及到数字和加法时,JavaScript有点有趣。
给出以下内容
'20' - '30' = 10;//返回数字10 '20' + '30' = '2030';//以字符串形式返回 从document返回的值。getElementById是字符串,所以最好在进行加法或减法之前将它们全部(即使是有效的)解析为数字。你的代码可以是:
function myFunction() {
var per = parseInt(document.getElementById('input1').value);
var num = parseInt(document.getElementById('input2').value);
var sum = (num / 100) * per;
var output = num - sum;
console.log(output);
document.getElementById('demo').innerHTML = output;
}
function myFunction2() {
var per = parseInt(document.getElementById('input3').value);
var num = parseInt(document.getElementById('input4').value);
var sum = (num / 100) * per;
var output = sum + num;
console.log(output);
document.getElementById('demo1').innerHTML = output;
}