Tengo dos cadenas que contienen solo números:
var num1 = '20',
num2 = '30.5';
Hubiera esperado poder agregarlos, pero en su lugar se están concatenados:
num1 + num2; // = '2030.5'
¿Cómo puedo forzar que estas cadenas sean tratadas como números?
javascript
Andrés
fuente
fuente
Documentos de MDN para parseInt
Documentos de MDN para parseFloat
En parseInt radix se especifica como diez para que estemos en la base 10. En javascript no estricto, un número antepuesto
0
se trata como octal. ¡Esto obviamente causaría problemas!También vea la respuesta de ChaosPandion para un atajo útil usando un operador unario . He configurado un violín para mostrar los diferentes comportamientos.
http://jsfiddle.net/EtX6G/
fuente
+num1 + +num2
es más corto, posiblemente más elegante. Básicamente, el+
operador unario se convierte aNumber
Recomendaría usar el operador unario más, para forzar que una cadena eventual se trate como un número, dentro del paréntesis para hacer que el código sea más legible como el siguiente:
Entonces, en tu caso es:
fuente
fuente
convertir las cadenas a
floats
conparseFloat(string)
ointegers
conparseInt(string)
fuente
parseInt(string, 10)
vea developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Si necesita agregar dos cadenas juntas que son números muy grandes, deberá evaluar la suma en cada posición de cadena:
fuente
Puede usar esto para agregar números:
fuente
tratar
o, según sus necesidades:
http://www.javascripter.net/faq/convert2.htm
Es posible que desee recoger el libro Javascript: The Good Parts , de Douglas Crockford. ¡Javascript tiene una colección de gotchas bastante considerable! Este libro recorre un largo camino para aclararlos. Ver también
y el excelente ensayo del Sr. Crockford, Javascript: el lenguaje de programación más incomprendido del mundo .
fuente
Siempre he restado cero.
Concedido que el método del operador unario es un carácter menos, pero no todos saben qué es un operador unario o cómo buscar en Google para saber cuándo no saben cómo se llama.
fuente
Si desea realizar operaciones con números como cadenas (como en el caso de que los números sean mayores de 64 bits), puede usar la biblioteca de enteros grandes .
fuente
Aquí, tiene dos opciones para hacer esto: -
.
Ahora te voy a mostrar aquí con la ayuda de ejemplos (Encuentra la suma de dos números).
Uso del operador unario plus
Usando el enfoque de análisis
fuente
fuente
Puede usar
parseInt
para analizar una cadena a un número. Para estar seguro, siempre pase10
como segundo argumento para analizar en la base 10.fuente
Asegúrese de redondear su respuesta final a menos de 16 decimales para las carrozas, ya que el script java tiene errores.
Por ejemplo 5 - 7.6 = -2.5999999999999996
fuente
@ cr05s19xx sugerido en una pregunta duplicada:
JavaScript es un poco divertido cuando se trata de números y sumas.
Dando lo siguiente
'20' - '30' = 10; // devuelve 10 como un número '20' + '30' = '2030'; // Los devuelve como una cadena Los valores devueltos por document.getElementById son cadenas, por lo que es mejor analizarlos todos (incluso el que funciona) para numerarlos, antes de continuar con la suma o resta. Tu código puede ser:
fuente
Use el
parseFloat
método para analizar las cadenas en números de punto flotante:fuente
Lo uso en mi proyecto. Uso + signo para tratar la cadena como un número (en la variable with_interesst)
Espero eso ayude
fuente
Funciona en mi caso, si te encuentras con el mismo problema que yo y no puedes encontrar una solución para ese caso y encuentras esta pregunta SO.
Lo siento por un poco fuera de tema, pero como acabo de descubrir que esto funciona, pensé que valdría la pena compartirlo.
No sé si es una solución sucia, o si es realmente legítima.
fuente
Puedes usar así:
Cuando aplique * 1 en num1, convierta la cadena en un número.
si num1 contiene una letra o una coma, devuelve NaN multiplicando por 1
si num1 es nulo, num1 devuelve 0
¡¡¡Saludos cordiales!!!
fuente
Pruebe esto si está buscando un código Javascript simple y desea usar dos cuadros de entrada y agregar números a partir de los dos valores. Aquí está el código.
Para obtener más detalles, visite http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html
fuente