Cómo obligar a JS a hacer matemáticas en lugar de juntar dos cadenas [duplicate]

3 minutos de lectura

Como obligar a JS a hacer matematicas en lugar de
sean

Necesito javascript para agregar 5 a una variable entera, pero en su lugar trata la variable como una cadena, por lo que escribe la variable y luego agrega 5 al final de la “cadena”. ¿Cómo puedo obligarlo a hacer matemáticas en su lugar?

var dots = document.getElementById("txt").value; // 5
function increase(){
    dots = dots + 5;
}

Producción: 55

¿Cómo puedo forzarlo a la salida? 10?

  • Este ejemplo en particular genera 10.

    – deceze

    30 de enero de 2011 a las 5:42

  • posible duplicado de Javascript agregando dos números incorrectamente; mira mi respuesta a esa pregunta

    – Phrogz

    30 de enero de 2011 a las 5:44


  • Ha colocado una carga indebida en aquellos que quieren ayudarlo al descargar todo su código sin intentar reducirlo. Pruébelo usted mismo… haga los atributos CSS para #control hacer alguna diferencia en su problema? Si no es así, bórralos y no nos los muestres. Continúe reduciendo su código hasta que tenga el caso de prueba mínimo absoluto necesario para reproducir su problema. La mayoría de las veces hacerlo causará usted para encontrar el problema y aprender en el proceso. Si no lo resuelve usted mismo, es muy probable que obtenga ayuda rápida con su ejemplo simple.

    – Phrogz

    30 de enero de 2011 a las 5:50

1646973491 137 Como obligar a JS a hacer matematicas en lugar de
Alex

tienes la linea

dots = document.getElementById("txt").value;

en su archivo, esto hará que los puntos sean una cadena porque el contenido de txt no está restringido a un número.

para convertirlo a un int cambie la línea a:

dots = parseInt(document.getElementById("txt").value, 10);

Nota la 10 aquí especifica decimal (base-10). Sin esto, algunos navegadores pueden no interpretar la cadena correctamente. Ver MDN: parseInt.

  • atajo… puntos = +document.getElementById(“txt”).valor

    – Rastreador1

    30 de enero de 2011 a las 8:45

  • parseInt(…, 10) también, siempre use un radix… una verificación de cordura… if (!dots || dots < 1) también puede estar en orden...

    – Rastreador1

    30 de enero de 2011 a las 8:47

  • Mejor use el operador de incremento para la adición. como VARIABLE++ en lugar de VAR= VAR+1;

    – gnganapath

    2 de diciembre de 2014 a las 6:43


  • function add() { var a = prompt(‘Ingrese el 1er número’); var b = prompt(‘ingrese el segundo número’); var c = a + b; console.log(‘reuslt es ‘ + c); } agregar(); por ejemplo var a = 5; y var b = 9; luego imprime 59 en lugar de 14; soy incapaz de entender lo que está yendo mal aquí.

    –Monu Rohilla

    28 de marzo de 2021 a las 6:21


  • @AnkurRohilla a y b son cadenas, necesita que sean números para poder hacer operaciones matemáticas con ellas. Esto se hace por var c = parseInt(a,10)+parseInt(b,10)

    – Alex

    29 de marzo de 2021 a las 12:19

Como obligar a JS a hacer matematicas en lugar de
mier

lo más simple:

dots = dots*1+5;

los puntos se convertirán en número.

  • Incluso más simple que eso sería dots = +dots+5.

    – Andy E.

    15 de septiembre de 2011 a las 16:44

1646973492 371 Como obligar a JS a hacer matematicas en lugar de
Nicolás

NO OLVIDES – Usar parseFloat(); si estás tratando con decimales.

  • Y no olvide que float no es un tipo de datos decimal stackoverflow.com/questions/588004/…

    –Tedd Hansen

    20 de noviembre de 2014 a las 14:04

  • Solo usa Number.

    – Sebastián Simón

    25 de junio de 2018 a las 6:59

Como obligar a JS a hacer matematicas en lugar de
Christopher Strolia-Davis

Estoy agregando esta respuesta porque no la veo aquí.

Una forma es poner un carácter ‘+’ delante del valor

ejemplo:

var x = +'11.5' + +'3.5'

=== 15

He encontrado que esta es la forma más simple

En este caso, la línea:

dots = document.getElementById("txt").value;

podría ser cambiado a

dots = +(document.getElementById("txt").value);

para forzarlo a un número

NOTA:

+'' === 0
+[] === 0
+[5] === 5
+['5'] === 5

1646973494 275 Como obligar a JS a hacer matematicas en lugar de
alan l

parseInt() debería hacer el truco

var number = "25";
var sum = parseInt(number, 10) + 10;
var pin = number + 10;

Te dio

sum == 35
pin == "2510"

http://www.w3schools.com/jsref/jsref_parseint.asp

Nota la 10 en parseInt(number, 10) especifica decimal (base-10). Sin esto, algunos navegadores pueden no interpretar la cadena correctamente. Ver MDN: parseInt.

1646973494 246 Como obligar a JS a hacer matematicas en lugar de
Holger Buick

Esto también te sirve:

dots -= -5;

1646973496 450 Como obligar a JS a hacer matematicas en lugar de
HSLM

Puede agregar + detrás de la variable y forzará que sea un número entero

var dots = 5
    function increase(){
        dots = +dots + 5;
    }

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad