¿Cómo sumar dos cadenas como si fueran números? [duplicar]
Tengo dos cadenas que contienen sólo números:
var num1 = '20',
num2 = '30.5';
Esperaba poder sumarlos, pero en su lugar están concatenados:
num1 + num2; // = '2030.5'
¿Cómo puedo forzar que estas cadenas sean tratadas como números?
Aceptado
Primero usaría el operador unario más para convertirlos a números.
+num1 + +num2;
Documentos de MDN para parseInt
Documentos de MDN para parseFloat
En parseInt radix se especifica como diez para que estemos en base 10. En javascript no estricto, un número antepuesto 0
se trata como octal. ¡Esto obviamente causaría problemas!
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
Consulte también la respuesta de ChaosPandion para obtener un atajo útil que utiliza un operador unario . He configurado un violín para mostrar los diferentes comportamientos.
http://jsfiddle.net/EtX6G/
var ten = '10';
var zero_ten = '010';
var one = '1';
var body = document.getElementsByTagName('body')[0];
Append(parseInt(ten) + parseInt(one));
Append(parseInt(zero_ten) + parseInt(one));
Append(+ten + +one);
Append(+zero_ten + +one);
function Append(text) {
body.appendChild(document.createTextNode(text));
body.appendChild(document.createElement('br'));
}